我一直在用Pandas修改Excel文档。我只需要一次处理一小部分,然后将它们分成一个单独的DataFrame,然后在修改后重新组合为整体,这似乎是最好的解决方案。这可行吗?我已经尝试过使用merge()和concat()的几个选项,但是它们似乎并没有给我我想要的结果。
如前所述,我尝试使用merge()函数将它们与较大的表重新组合在一起,但是我只是遇到了内存错误,并且当我使用较小的数据帧对其进行测试时,未维护行。
这是我要做什么的一个小例子:
import pandas as pd
df1 = pd.DataFrame({'A':[1,2,3,5,6],'B':[3,10,11,13,324],'C':[64,'','' ,'','' ],'D':[32,45,67,80,100]})#example df
print(df1)
df2= df1[['B','C']]#section taken
df2.at[2,'B'] = 1#modify area
print(df2)
df1 = df1.merge(df2)#merge dataframes
print(df1)
输出:
A B C D
0 1 3 64 32
1 2 10 45
2 3 11 67
3 5 13 80
4 6 324 100
B C
0 3 64
1 10
2 1
3 13
4 324
A B C D
0 1 3 64 32
1 2 10 45
2 5 13 80
3 6 324 100
我想看的
A B C D
0 1 3 64 32
1 2 10 45
2 3 11 67
3 5 13 80
4 6 324 100
B C
0 3 64
1 10
2 1
3 13
4 324
A B C D
0 1 3 64 32
1 2 10 45
2 3 1 67
3 5 13 80
4 6 324 100
正如我之前所说,在我的实际代码中,如果由于数据帧的大小而尝试这样做,只会遇到内存错误
答案 0 :(得分:0)
这里不需要合并,您只需将值从df2
重新分配到df1
:
...
df1.loc[df2.index, df2.columns] = df2 #recover changes into original dataframe
print(df1)
给予预期:
A B C D
0 1 3 64 32
1 2 10 45
2 3 1 67
3 5 13 80
4 6 324 100
df1.update(df2)
给出相同的结果(感谢Quang Hoang的准确性)