我观察到过滤数据框时不了解的以下行为
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']
此处是屏幕截图
谢谢
答案 0 :(得分:2)
因为您要查找整数(== 1
)。如果我们尝试== '1'
,将会得到预期的结果。
边注,您可以用“熊猫”的方式重写最后一行,请参见下文
carsdf = carsdf.astype('str')
condition1 = carsdf['nr'] == '1'
condition2 = carsdf['ft'] == '1'
carsdf.loc[condition1 & condition2,'dep'].tolist()
输出
['0']