gpt4 book ai didi

python - 追加 CSV 文件,匹配无序列

转载 作者:太空宇宙 更新时间:2023-11-03 17:59:42 24 4
gpt4 key购买 nike

问题:附加 CSV 文件时匹配列

我有 50 个 .csv 文件,其中每列是一个单词,每行是一天中的一个时间,每个文件保存一天的所有单词。它们看起来像这样:

Date  Time Aword Bword Cword Dword
Date1 t1 0 1 0 12
Date1 t2 0 6 3 0

Date Time Eword Fword Gword Hword Bword
Date2 t1 0 0 1 0 3
Date2 t2 2 0 0 19 0

我想附加文件,以便在新列中添加新单词时匹配具有相同单词(如本例中的 Bword)的任何列:

Date  Time Aword Bword Cword Dword Eword Fword Gword Hword
Date1 t1 0 1 0 12
Date1 t2 0 6 3 0
Date2 t1 3 0 0 1 0
Date2 t2 0 2 0 0 19

我将 csv 文件作为数据帧打开来操作它们,并使用 dataframe.append 添加新文件,如下所示:

Date  Time Aword Bword Cword Dword
Date1 t1 0 1 0 12
Date1 t2 0 6 3 0
Date Time Eword Fword Gword Hword Bword
Date2 t1 0 0 1 0 3
Dat2e t2 2 0 0 19 0

是否有不同的方法可以在附加时对齐匹配的列?即无需迭代每一列并检查匹配。

如果这个问题太模糊,我深表歉意,我是Python新手,并且仍然很难知道什么时候我的思维方式非Python,什么时候我使用了错误的工具。 p>

编辑:更多信息
1) 我需要多次执行此任务,五批 csv 每批执行一次
2) 文件都有 25 行,但有 5 到 294 列
3) 行的顺序很重要 Day1(t1, t2...tn) 然后 Day2(t1, t2...tn)
4)列的顺序并不重要

最佳答案

IIUC,您可以简单地使用 pd.concat,它会自动对齐列:

>>> csvs = glob.glob("*.csv")
>>> dfs = [pd.read_csv(csv) for csv in csvs]
>>> df_merged = pd.concat(dfs).fillna("")
>>> df_merged
Aword Bword Cword Date Dword Eword Fword Gword Hword Time
0 0 1 0 Date1 12 t1
1 0 6 3 Date1 0 t2
0 3 Date2 0 0 1 0 t1
1 0 Date2 2 0 0 19 t2

(尽管我建议使用 fillna(0) 或将其保留为 nan;如果您填充空字符串以使其看起来像您想要的输出,则该列必须具有对象数据类型,并且它们比 int 或 float 慢得多。)

如果您确实对列顺序很挑剔,您可以作弊并使用(re)set_index:

>>> df_merged.set_index(["Date", "Time"]).reset_index()
Date Time Aword Bword Cword Dword Eword Fword Gword Hword
0 Date1 t1 0 1 0 12
1 Date1 t2 0 6 3 0
2 Date2 t1 3 0 0 1 0
3 Date2 t2 0 2 0 0 19

关于python - 追加 CSV 文件,匹配无序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27912090/

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