我正在尝试将 Pandas 数据框的单元格中的值与其紧邻其下方的单元格进行比较。为了从当前行下方的行获取值,我使用了shift:
df['shift_minus_1'] = df['company'].shift(-1)
但是,当我比较这些值时,Pandas 返回 True,即使某些值显然不匹配。这是我用于比较的代码:
df['comparison'] = df['company'].shift(-1).values[0] == df['company'].values[0]
最佳答案
您仅比较数组中的第一个值,而不是整个系列:
df['comparison'] = df['company'].shift(-1) == df['company']
应该可以
你做了什么
df['comparison'] = df['company'].shift(-1).values[0] == df['company'].values[0]
只是比较数组中的第一个元素,这会产生一个标量值,因此它将整个列设置为相同的值
示例:
In[5]:
#data setup
df = pd.DataFrame({'company':['IBM','IBM','IBM','IBM','Apple','Apple','Apple','Apple']})
df['shift'] = df['company'].shift(-1)
df
Out[5]:
company shift
0 IBM IBM
1 IBM IBM
2 IBM IBM
3 IBM Apple
4 Apple Apple
5 Apple Apple
6 Apple Apple
7 Apple NaN
df['comparison'] = df['company'].shift(-1) == df['company']
df
Out[6]:
company shift comparison
0 IBM IBM True
1 IBM IBM True
2 IBM IBM True
3 IBM Apple False
4 Apple Apple True
5 Apple Apple True
6 Apple Apple True
7 Apple NaN False
只是为了展示你做了什么:
print(df['company'].shift(-1).values[0])
print(df['company'].values[0])
IBM
IBM
关于python - Pandas - 不同字符串之间的比较始终返回 True,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50414136/