Pandas Dataframe将列解释为float而不是String

Geo*_*g B 5 python types dataframe python-3.x pandas

我想将csv文件导入到pandas数据框。有一列带有ID的ID,其中仅包含数字,但并非每一行都有ID。

   ID      xyz
0  12345     4.56
1           45.60
2  54231   987.00
Run Code Online (Sandbox Code Playgroud)

我想将此列读为String,但是即使我用

df=pd.read_csv(filename,dtype={'ID': str})

我懂了

   ID         xyz
0  '12345.0'    4.56
1   NaN        45.60
2  '54231.0'  987.00
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以将ID作为不含小数的字符串获取,而'12345'无需在导入表后编辑字符串?

Joe*_*Joe 7

解决方案可能是这样,但在您导入 df 之后:

df = pd.read_csv(filename)
df['ID'] = df['ID'].astype(int).astype(str)
Run Code Online (Sandbox Code Playgroud)

或者因为有NaN

df['ID'] = df['ID'].apply(lambda x: x if pd.isnull(x) else str(int(x)))
Run Code Online (Sandbox Code Playgroud)