更改熊猫数据框中的数据类型会更改过滤结果

时间:2020-05-25 18:40:08

标签: python pandas dataframe filtering

我观察到过滤数据框时不了解的以下行为

import pandas as pd
mydict={'dep':[0,0,0,0],'nr':[1,1,2,2],'ft':[1,2,3,4],'car':['corsa','astra','clio','megane']}
carsdf = pd.DataFrame(mydict)
condition1 = carsdf['nr'] == 1
condition2 = carsdf['ft'] == 1
carsdf.loc[condition1 & condition2,['dep']]['dep'].tolist()

结果[0]

现在我再次做同样的事情,但是将类型更改为str

carsdf = carsdf.astype('str')
condition1 = carsdf['nr'] == 1
condition2 = carsdf['ft'] == 1
carsdf.loc[condition1 & condition2,['dep']]['dep'].tolist()

结果[]

我希望['0']

里面没有元素。将类型更改为str时为什么0消失?

如何确保没有数据丢失?

注意:如果您想知道为什么要“ 0”,因为接收到的数据也可能是“ 2,3,4”形式,因此我想将其转换为值列表。如果为0,我需要['0']

此处是屏幕截图

谢谢

enter image description here

1 个答案:

答案 0 :(得分:2)

因为您要查找整数(== 1)。如果我们尝试== '1',将会得到预期的结果。

边注,您可以用“熊猫”的方式重写最后一行,请参见下文

carsdf = carsdf.astype('str')
condition1 = carsdf['nr'] == '1'
condition2 = carsdf['ft'] == '1'
carsdf.loc[condition1 & condition2,'dep'].tolist()

输出

['0']