将带有int和nan的数据帧打印为csv



我有一个如下的数据帧:

import pandas as pd
import numpy as np
df = pd.DataFrame([{'int':1, 'float':1.1, 'str':'aaa'}, {'int':None, 'float':None, 'str':None}])
df.fillna('', inplace=True)

我们想将df转储到下面这样的csv中(使用"#|#"作为字段分隔符(,将int保持为int:

int#|#float#|#str
1#|#1.1#|#aaa
#|##|#

我该如何做到这一点?

下面的解决方法有效,但我的DataFrame很大,我想知道是否有更好/更有效的方法:

df['int'] = df['int'].apply(lambda x: ('%.0f' % x) if x != '' else x)
np.savetxt('test.txt', df[['int', 'float', 'str']].values, fmt='%s', delimiter='#|#', newline="n")

根据我的理解,您不能使用#delimintor将数据帧转储到cab。驾驶室自动应用,作为熟食店。您可以使用pandas数据帧类的to_CSV方法将数据帧转换为CSV文件

这里的技巧是强制列类型为obj。这只对int列是必需的,但必须在panda将NaN值写入整数列之前完成。发生这种情况时,列将转换为浮点。

所以你可以做:

df = pd.DataFrame([{'int':1, 'float':1.1, 'str':'aaa'}, {'int':None, 'float':None, 'str':None}], dtype=object)
df.fillna('', inplace=True)

你会得到:

float int  str
0   1.1   1  aaa
1               

最新更新