Python 熊猫-不同字符串之间的比较始终返回True

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] 您只是比较数组中的第一个值

我试图将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

去掉
.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