【发布时间】:2020-05-26 02:46:09
【问题描述】:
我在过滤数据帧时观察到以下我不理解的行为
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']
这里是截图
谢谢
【问题讨论】:
-
condition1 = carsdf['nr'] == str(1)condition2 = carsdf['ft'] == str(1)你能试试这个吗?
标签: python pandas dataframe filtering