繁体   English   中英

如何将共享同一列的多个 CSV 文件合并到一个新的 CSV 文件中?

[英]How can I combine multiple CSV files that share an identical column into a new CSV file?

所以我有多个 csv 数据文件,我想将它们放入一个主文件中。 每个 CSV 文件有两列,第一列标有 bin,第二列表示落在这些 bin 中的数据点数。 我想以一种使我能够制作热图或二维直方图的方式组合每个 csv 文件,我遵循了本教程,但没有达到预期的效果。 输出的第一行最终看起来像这样,只是前几行

Coordinate Bins,Counts for time interval 0,Coordinate Bins,Counts for time interval 1,Coordinate Bins,Counts for time interval 2,Coordinate Bins,Counts for time interval 3,Coordinate Bins,Counts for time interval 4,Coordinate Bins,Counts for time interval 5,Coordinate Bins,Counts for time interval 6,Coordinate Bins,Counts for time interval 7,Coordinate Bins,Counts for time interval 8,Coordinate Bins,Counts for time interval 9
"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0,"(-10, -9]",0
"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0,"(-9, -8]",0
"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0,"(-8, -7]",0
"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0,"(-7, -6]",0
"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0,"(-6, -5]",0
"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0,"(-5, -4]",0
"(-4, -3]",0,"(-4, -3]",41,"(-4, -3]",6,"(-4, -3]",20,"(-4, -3]",0,"(-4, -3]",0,"(-4, -3]",0,"(-4, -3]",5,"(-4, -3]",2,"(-4, -3]",1
"(-3, -2]",21,"(-3, -2]",52,"(-3, -2]",38,"(-3, -2]",52,"(-3, -2]",1,"(-3, -2]",0,"(-3, -2]",0,"(-3, -2]",68,"(-3, -2]",22,"(-3, -2]",4
"(-2, -1]",13,"(-2, -1]",80,"(-2, -1]",120,"(-2, -1]",51,"(-2, -1]",34,"(-2, -1]",36,"(-2, -1]",4,"(-2, -1]",81,"(-2, -1]",40,"(-2, -1]",8

我似乎无法弄清楚如何让它只添加一次而不是每次添加标签列。

这是我尝试执行此操作的其中一个 CSV 文件的示例,同样只是前几行

Coordinate Bins,Counts for time interval 0
"(-10, -9]",0
"(-9, -8]",0
"(-8, -7]",0
"(-7, -6]",0
"(-6, -5]",0
"(-5, -4]",0
"(-4, -3]",0
"(-3, -2]",24
"(-2, -1]",67
"(-1, 0]",126
"(0, 1]",171
"(1, 2]",339

最后这是我正在使用的代码,

def combine_to_master(coordmastername, csvdir):
    os.chdir(csvdir)
    ext = "csv"
    all_filenames = [i for i in glob.glob('*.{}'.format(ext))]
    combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames], sort=True, axis=1)
    combined_csv.to_csv(coordmastername + ".csv", index=False, encoding="utf-8")

感谢您的任何帮助。

您可以获得第一个数据帧,然后与新数据帧合并

import pandas as pd

df1 = pd.DataFrame({'Bin': [1,2,3], 'Counts 1': [4,5,6]})
df2 = pd.DataFrame({'Bin': [1,2,3], 'Counts 2': [7,8,9]})
df3 = pd.DataFrame({'Bin': [1,2,3], 'Counts 3': [1,2,3]})

df = df1

for new_df in [df2, df3]:
    df = pd.merge(df, new_df)

print(df)

结果

   Bin  Counts 1  Counts 2  Counts 3
0    1         4         7         1
1    2         5         8         2
2    3         6         9         3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM