首页 > 解决方案 > 将 csv 附加到用管道分隔的数据框行

问题描述

我以前是这样做的:

dfx.to_csv('test.csv', index=None, sep='|')

我想将该文件附加到另一个数据框。这是我的尝试:

with open('test.csv','a') as fd:
        fd.write(str(dfx.iloc[0]))

我要附加到 csv 的新数据帧中只有一行数据,并且需要用管道分隔。

编辑:什么也没发生

EDIT2:我必须在已经存在的 csv 中添加一行。CSV 是完全单独创建的。我在这里展示它是为了让您知道我是如何创建它的,以便可以正确附加它,而不是因为它发生在同一个脚本等中。

EDIT3:这让我得到了我想要附加的内容:

s = dfx.iloc[0]
print(s.str.cat(sep='|'))

但这并没有按预期附加:

with open('test.csv','a') as fd:
            fd.write(str(s))

EDIT4:这有效:

        # Save periodicity to csv the first time
#         dfx.to_csv('test.csv', index=None, sep='|')

        # append the csv
        s = dfx.iloc[0]
#         print(s.str.cat(sep='|'))
        s = s.str.cat(sep='|')
        with open('test.csv','a') as fd:
            fd.write(str(s) + '\n')

标签: pythonpython-3.xpandas

解决方案


正如您所写,您希望连接 csv 文件,我建议:

import io
import pandas as pd
df=pd.read_csv(io.StringIO("x,y,z\n1,2,3\n4,5,6\n"))
df2=pd.read_csv(io.StringIO("x,y,z\n4,6,4\n5,5,5\n"))

with open('/tmp/the_csv', 'w') as f:
    f.write(df.to_csv(index=False,header=True, sep='|'))

with open('/tmp/the_csv', 'a') as f:
    f.write(df.to_csv(index=False,header=False, sep='|'))

检查内容:

!cat /tmp/the_csv

x|y|z
1|2|3
4|5|6
1|2|3
4|5|6

推荐阅读