gpt4 book ai didi

python - DataFrame iterrows() 和 .to_csv : Writing row by row

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:24 24 4
gpt4 key购买 nike

我正在使用以下脚本

  • 将一个函数应用到 DataFrame 的每一行中的列
  • 将该函数的返回值写入 DataFrame 的两个新列
  • 不断将DataFrame写入*.csv

我想了解是否有更好的方法来运行以下计算:

df = 一个 500 行 20 列的 DataFrame

for index, row in df.iterrows():
df.loc[index, 'words'], df.loc[index, 'count'] = transcribe(df.loc[index, 'text'])
df.to_csv('out.csv', encoding='utf-8', index=False)

目前,脚本每次(针对每一行)将完整的 df 数据帧输出为 *.csv,包括计算行“words”和“counts”的附加值,直到那时。我想知道,是否也可以逐行完整地写,即只输出 csv 中完整的那些行。

谢谢!

最佳答案

我不明白你为什么要逐行而不是在最后写入整个数据帧,但这里有一个解决你的问题的方法:以追加模式写入数据帧的切片(即当前行) , 只为第一行添加标题:

is_first_row = True
for index, row in df.iterrows():
df.loc[index, 'words'], df.loc[index, 'count'] = transcribe(df.loc[index, 'text'])
df.loc[index:index].to_csv('out.csv', encoding='utf-8', index=False, mode='a', header=is_first_row)
is_first_row = False


根据脚本可能被中断的评论更新:
在这种情况下,您可能希望通过检查文件是否已存在或是否是新文件来确定是否写入 header :

with open('out.csv', encoding='utf-8', mode='a') as f:
for index, row in df.iterrows():
df.loc[index, 'words'], df.loc[index, 'count'] = transcribe(df.loc[index, 'text'])
df.loc[index:index].to_csv(f, index=False, header=f.tell()==0)

关于python - DataFrame iterrows() 和 .to_csv : Writing row by row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com