迭代许多 CSV 文件中的行并在 Pandas 中修改它们

问题描述 投票:0回答:1

我正在编写一个脚本,当满足条件时,该脚本应该读取大量 csv 文件并转换特定列中的数据。 为此,我有一个如下所示的 for 循环:

for index, transformed_row in transformed_data.iterrows():
        new_rows = []
   
        if transformed_row['Code'] in ['14/9', '14+9', '149']:
            transformed_row['Code'] = '18'
            
        elif transformed_row['Code'] == "3+4+1":
            transformed_row['Code'] = '17'

但是我在 Pandas 文档中读到,使用 .iterrows() 时不应修改 DataFrame。尽管此代码有效并且我的输出 DF 正是我想要的方式,但我担心超过 50 个 csv 文件这并不总是按照文档中所述工作。

所以我的想法是制作一个新列表

new_rows = []

并使用类似这样的内容添加更改的行

new_rows.append(transformed_row.copy())

但是,当我这样做时,我得到了我想要转换的行的重复项。我找不到如何正确执行此操作的解决方案...

python pandas dataframe transformation
1个回答
0
投票

您所面临的重复问题是因为您要附加整个transformed_row的副本

以下是修改代码的方法。

new_rows = []

for index, transformed_row in transformed_data.iterrows():
    new_row = transformed_row.copy()  # Create a copy of the original row
    
    if transformed_row['Code'] in ['14/9', '14+9', '149']:
        new_row['Code'] = '18'
        
    elif transformed_row['Code'] == "3+4+1":
        new_row['Code'] = '17'
    
    new_rows.append(new_row)  # Append the modified row to the new list

# Now you can create a new DataFrame from new_rows
new_dataframe = pd.DataFrame(new_rows)
© www.soinside.com 2019 - 2024. All rights reserved.