我正在尝试编写一个函数来检查列中行中是否存在值。我有一个脚本通过遍历列来完成此操作,但我担心这在大型数据集上使用时效率低下。
这是我目前的代码:
import pandas as pd
a = [1, 2, 3, 4]
b = [2, 3, 3, 2]
c = [5, 6, 1, 3]
d = [1, 0, 0, 99]
df = pd.DataFrame({'a': a,
'b': b,
'c': c,
'd': d})
cols = ['a', 'b', 'c', 'd']
df['e'] = 0
for col in cols:
df['e'] = df['e'] + df[col] == 1
print(df)
结果:
a b c d e
0 1 2 5 1 True
1 2 3 6 0 False
2 3 3 1 0 True
3 4 2 3 99 False
如您所见,列 e 会记录值" 1"存在于那一行。我想知道是否有更好/更有效的方法来实现这些结果。
答案 0 :(得分:4)
您可以检查数据框中的值是否为1,并查看行中是否有任何值(轴= 1):
df['e'] = df.eq(1).any(1)
df
# a b c d e
#0 1 2 5 1 True
#1 2 3 6 0 False
#2 3 3 1 0 True
#3 4 2 3 99 False
答案 1 :(得分:0)
Python支持'in'和'not in'。
实施例
>>> a = [1, 2, 5, 1]
>>> b = [2, 3, 6, 0]
>>> c = [5, 6, 1, 3]
>>> d = [1, 0, 0, 99]
>>> 1 in a
True
>>> 1 not in a
False
>>> 99 in d
True
>>> 99 not in d
False
通过使用它,您不必为此情况自行迭代数组。