我有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