我在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()方法,但我仍然无法做到这一点。
你们知道怎么做吗?
答案 0 :(得分:4)
尝试这种方法:
df[df=='D'].any(1)
答案 1 :(得分:2)
您只需将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
答案 2 :(得分:0)
为帮助具有相同挑战的任何人,我提出了另一种选择。
您可以将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 |
+---+-----------+-----------+-----------+-----------+