情况如下:在";对于";循环我将csv文件作为数据帧读取,并将它们添加到一个主要的大df中。如果新数据还没有在主df中,那么它将简单地连接到主df。如果新数据在主df中已经有相同的值,则必须与前一个值求和。
一个例子:
main_df=
building, day, kw/h
1, 1, 50
1, 2, 55
2, 1, 30
2, 2, 40
new_df_1=
building, day, kw/h
3, 1, 55
3, 2, 58
new_df_2=
building, day, kw/h
2, 1, 15
2, 2, 19
2, 3, 14
new_df2将简单地连接到main_df,但new_df2必须与现有数据求和。因此,愿望的答案将是:
building, day, kw/h
1, 1, 50
1, 2, 55
2, 1, 45
2, 2, 59
2, 3, 14
3, 1, 55
3, 2, 58
问题:1。我如何检查,maindf中是否已经有同一栋楼和同一天?2.如何将";KW/h";库姆斯?我的意思是:
for csv in path_list:
read= pd.read_csv(csv)
if ( **already exist** ):
**sum with old values**
else:
main_df= pd.concat([main_df,read])
我在寻找一些函数,比如";合并";带有指示器";on=";自动找到正确的值并求和。但我什么也找不到。任何想法都会有所帮助。
连接三个DF,然后求和建筑物和日的千瓦/小时
df=pd.concat([main_df, new_df1, new_df2])
df=df.groupby(['building','day'], as_index=False)['kw/h'].sum()
df
building day kw/h
0 1 1 50
1 1 2 55
2 2 1 45
3 2 2 59
4 2 3 14
5 3 1 55
6 3 2 58