【问题标题】:Loop through old and new versions of files循环浏览新旧版本的文件
【发布时间】:2022-01-28 01:36:52
【问题描述】:

我正在尝试创建一个 .csv,其中包含新旧 csv 文件之间不同的记录。我已经使用一对这样的一对成功地完成了这一点

old_df = 'file1_old.csv'
new_df = 'file1_new.csv'

df1 = pd.read_csv(old_df)
df2 = pd.read_csv(new_df)

df1['flag'] = 'old'
df2['flag'] = 'new'

df = pd.concat([df1, df2])

dups_dropped = df.drop_duplicates(df.columns.difference(['flag']) keep=False)
dups_dropped.to_csv('difference.csv', index=False)

如果新旧文件名输入具有相同的约定,例如:

>
file1_new, file1_new
file2_new, file2_old 
file3_new, file3_old

所以输出是

file1_difference.csv
file2_difference.csv
file3_difference.csv

想法?非常感谢

【问题讨论】:

    标签: python excel pandas csv


    【解决方案1】:

    使用带有 f 字符串的简单 for 循环来帮助格式化文件名应该可以工作:

    for i in range(1,11): # replace 11 with the number of files you have + 1
        old_df = f'file{i}_old.csv'
        new_df = f'file{i}_new.csv'
    
        df1 = pd.read_csv(old_df)
        df2 = pd.read_csv(new_df)
    
        df1['flag'] = 'old'
        df2['flag'] = 'new'
    
        df = pd.concat([df1, df2])
    
        dups_dropped = df.drop_duplicates(df.columns.difference(['flag']) keep=False)
        dups_dropped.to_csv(f'difference{i}.csv', index=False)
    

    【讨论】:

    • 太棒了!您在 'keep=False' 之前缺少逗号,但这就像一个魅力。
    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多