![](/img/trans.png)
[英]How to check in which column is certain value in pandas.DataFrame?
[英]Check if a value is in a list of columns in a pandas.DataFrame
我正在pandas.DataFrame中处理一些看起来像这样(简化)的数据:
|-----------|-----------|-----------|
| Feature 1 | Feature 2 | Feature 3 |
|-----------|-----------|-----------|
| A | B | D |
| A | A | B |
| A | D | A |
| A | B | A |
| A | A | A |
| A | A | D |
|-----------|-----------|-----------|
我想创建一个新列来回答以下问题:“任何列中是否都存在值'D'?”
因此,最终数据如下所示:
|-----------|-----------|-----------|-----------|
| Feature 1 | Feature 2 | Feature 3 | Feature 4 |
|-----------|-----------|-----------|-----------|
| A | B | D | True |
| A | A | B | False |
| A | D | A | True |
| A | B | A | False |
| A | A | A | False |
| A | A | D | True |
|-----------|-----------|-----------|-----------|
我尝试使用df.isin()方法,但是仍然无法做到这一点。
你们知道怎么做吗?
试试这种方法:
df[df=='D'].any(1)
您只需将df
与D
进行比较,然后通过any
一个检查至少一个True
:
df['Feature 4'] = (df == 'D').any(axis=1)
print (df)
Feature 1 Feature 2 Feature 3 Feature 4
0 A B D True
1 A A B False
2 A D A True
3 A B A False
4 A A A False
5 A A D True
或比较使用eq
:
df['Feature 4'] = df.eq('D').any(axis=1)
print (df)
Feature 1 Feature 2 Feature 3 Feature 4
0 A B D True
1 A A B False
2 A D A True
3 A B A False
4 A A A False
5 A A D True
print (df.eq('D'))
Feature 1 Feature 2 Feature 3
0 False False True
1 False False False
2 False True False
3 False False False
4 False False False
5 False False True
为了帮助具有相同挑战的任何人,我提出了另一种选择。 您可以将numpy where
函数与或一起使用,以检查所有列。
请参见下面的样机:
import numpy as np
import pandas as pd
a = [
['A', 'B', 'D'],
['A','A', 'B'],
['A','D', 'A'],
['A','B', 'A'],
['A','A', 'A'],
['A','A', 'D']
]
df = pd.DataFrame(a, columns=['Feature 1', 'Feature 2', 'Feature 3'])
df['Feature 4'] = np.where((df['Feature 1']=='D') | (df['Feature 2']=='D') |(df['Feature 3']=='D') , True, False)
df
结果如下:
+---+-----------+-----------+-----------+-----------+
| | Feature 1 | Feature 2 | Feature 3 | Feature 4 |
+---+-----------+-----------+-----------+-----------+
| 0 | A | B | D | True |
+---+-----------+-----------+-----------+-----------+
| 1 | A | A | B | False |
+---+-----------+-----------+-----------+-----------+
| 2 | A | D | A | True |
+---+-----------+-----------+-----------+-----------+
| 3 | A | B | A | False |
+---+-----------+-----------+-----------+-----------+
| 4 | A | A | A | False |
+---+-----------+-----------+-----------+-----------+
| 5 | A | A | D | True |
+---+-----------+-----------+-----------+-----------+
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.