Python 熊猫-不同字符串之间的比较始终返回True
我试图将Pandas数据帧的单元格中的值与其下一个单元格中的值进行比较。要从当前行下方的行中获取值,我使用shift:Python 熊猫-不同字符串之间的比较始终返回True,python,pandas,Python,Pandas,我试图将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['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
去掉
.values[0]
,它只选择一个特定的值(因此,当然,总是返回相同的值)
返回
Out[92]:
company shift_minus_1 comparison
0 IBM IBM True
1 IBM Apple False
2 Apple NaN False
请提供一个最简单的工作示例…为什么要退回到
numpy
?只需使用pandas
。
Out[92]:
company shift_minus_1 comparison
0 IBM IBM True
1 IBM Apple False
2 Apple NaN False