我知道这个话题已经得到了广泛的对待,但是我无法得到我想要的东西,对可能是新手的问题表示抱歉。所以事情是我有这样的CSV:
Date,"Tmax","Tmin","Tmedia","Rachas","Vmax","LT","L1","L2","L3","L4"
23 nov 2018,"14.0 (15:30)","7.3 (23:59)","10.7","12 (14:50)","5 (14:50)","2.0","1.6","0.4","0.0","0.0"
我每天都会收到类似的新CSV文件,其中包含多行,但是我对标头后第一行中的仅感兴趣。我要做的是每天将第一行迭代地复制到新的CSV,因此在一周结束时,该CSV应该有七行。另外,我想检查该日期是否已经在该每日文件中。问题是我没有正确获得新的CSV,这是我的尝试:
import pandas as pd
df = pd.read_csv('file.csv', skiprows=4, header=None)
writer=df[df.index.isin([0])].to_csv('output.csv',header=None)
此代码的问题是它每次都会覆盖文件 output.csv 。然后我考虑将其更改为:
writer=df[df.index.isin([0])]
pd.read_csv('output.csv').append(writer).to_csv('output.csv',header=None)
现在的问题是它确实需要该文件先前存在;即使这样,该信息也无法正确复制到新文件中。我认为这一定比这更简单,但是我被卡住了。感谢您的帮助。
答案 0 :(得分:0)
如果只希望标题后的第一行,请读取标题,然后使用nrows=1
。然后在附加模式下使用open
将单行数据帧写入csv文件的末尾。 header=False
参数可以很好地处理写入时排除标头的情况。
df = pd.read_csv('file.csv', nrows=1)
with open('output.csv', 'a') as fout:
df.to_csv(fout, header=False)
我省略了skiprows=4
,因为目前尚不清楚它与您的输入数据之间的关系。