在pandas中对来自多个csv文件的相同行进行相加



我有21个CSV文件,每个文件有48列和365行(+-5),我需要将这21个文件合并为一个文件,然后将第一个文件的第一行与第二个文件的第一行进行添加,然后是第三个文件的第一行,以此类推,直到第365行。我不知道我需要在熊猫中使用3D模型来完成这项工作,但我需要帮助来实现以下结果。

file1:
0:00 0:30 1:00 1:30 ... 23:30
1  A1   A2   A3   A4       A48
2
3
.
.
365
file2:
0:00 0:30 1:00 1:30 ... 23:30
1  *A1   *A2   *A3   *A4       *A48
2
3
.
.
365

我想添加21个文件的第一行,然后是第二行,同样直到第365行。eg (A1+*A1 + A2+*A2+..+A48+*A48)

我如何读取这21个文件并将其相加我试过下面的代码。

为了组合多个CSV,我使用了下面的代码代码,这里的代码可以读取文件并连接但是这种连接也留下了许多nan值。这让我很困惑,因为我已经花了很长时间来完成这件事。

path ='C:/Users/niraj/Documents/Energy_upgraded/demandfiles'  
all_files = glob.glob(os.path.join(path, "*.csv"))  
li = []
for filename in all_files:     
print(filename)
df = pd.read_csv(filename, index_col=None, header=0)
li.append(df)
frame = pd.concat(li, axis=0, ignore_index=True)

如果我没理解错的话,我想这会让你得到你想要的。

你有的很好。如果您在连接数据帧之前对它们进行调换,您应该能够轻松地获得总和。

例如,假设您的文件包含以下

1,1,1,1
2,2,2,2
3,3,3,3
4,4,4,4

我将在循环中使用同一个文件而不是多个文件。对于你来说,循环将会像你所拥有的那样。


import pandas as pd
df_list = []
for i in range(3):
df = pd.read_csv('file.csv', index_col=None, header=None)
df_list.append(df.T) # here .T means you are transposing the dataframe
df_total = pd.concat(df_list)
print(df_total)

输出:

0  1  2  3
0  1  2  3  4
1  1  2  3  4
2  1  2  3  4
3  1  2  3  4
0  1  2  3  4
1  1  2  3  4
2  1  2  3  4
3  1  2  3  4
0  1  2  3  4
1  1  2  3  4
2  1  2  3  4
3  1  2  3  4

那么你可以这样做:

print(df_total.sum())

输出:

0    12
1    24
2    36
3    48
dtype: int64

相关内容

  • 没有找到相关文章

最新更新