Pandas 替换一列中的字符串会导致另一列消失

Pandas replacing string in one column leads to other column disappearing

Pandas 的新手,我做错了。 运行 下面的代码用空字符串替换“数据”列中不包含字符串“字段”的单元格,而不是返回两列(id、数据),整个 id 列消失,所有行开始用分隔符代替。我的直觉是,当我将块写回 csv 时,我只写了 chunk_results,它对“id”没有任何作用。问题是我不知道怎么解决。

import pandas as pd
in_csv= "out.csv"
out_csv= "out_1.csv"
reader = pd.read_csv(in_csv, chunksize=100, sep='|', header=None, names=['id', 'data'], encoding='utf-8')
for chunk_df in reader:
    chunk_results = chunk_df['data'].astype(str).str.replace('^((?!field).)*$','', regex=True)
    chunk_results.to_csv(out_csv, mode='a', sep='|', encoding='utf-8', header=None, index=False)

我试过的: 我猜想我需要创建一个 chunk_id = chunk_df['id'] 并将其与“chunk_results” to_csv 连接,但这给了我一个错误。知道我做错了什么吗?

您需要将结果分配回数据框块的列。当您分配给 chunk_results 时,您将其设置为仅包含 data

的数据框
chunk_df['data'] = chunk_df['data'].astype(str).str.replace('^((?!field).)*$','', regex=True)
chunk_df.to_csv(out_csv, mode='a', sep='|', encoding='utf-8', header=None, index=False)