比较python中两列数据帧时的错误结果

时间:2017-07-31 05:06:03

标签: python pandas dataframe data-analysis

这些是我的数据框架。

df contains no values onlly column names,

P1  |P2 |P3



df4,

    Names   Std
0   Kumar   10
1   Ravi    5



mask=df4["Names"].str.contains(('|').join(df["P1"].values.tolist()),na=False)

Out[30]:
 0    True
 1    True
Name: Names, dtype: bool

为什么它在“P!”时给出真值。列中没有任何值?

1 个答案:

答案 0 :(得分:1)

编辑如果需要为空列返回False,您可以添加条件以检查列是否为empty

df = pd.DataFrame(columns=['P1','P2','P3'])
print (df)
Empty DataFrame
Columns: [P1, P2, P3]
Index: []

df4 = pd.DataFrame({'Names':['Kumar','Ravi']})

mask=df4["Names"].str.contains(('|').join(df["P1"].values.tolist()),na=False)
mask = mask & (not df['P1'].empty)
print (mask)
0    False
1    False
Name: Names, dtype: bool
df = pd.DataFrame({'P1':['Kumar']}, columns=['P1','P2','P3'])
print (df)
      P1   P2   P3
0  Kumar  NaN  NaN

df4 = pd.DataFrame({'Names':['Kumar','Ravi']})

mask=df4["Names"].str.contains(('|').join(df["P1"].values.tolist()),na=False)
mask = mask & (not df['P1'].empty)
print (mask)
0     True
1    False
Name: Names, dtype: bool