我一直在用熊猫修改一个 excel 文档。我一次只需要处理小部分,将每个部分分解为单独的数据帧,然后在修改后重新组合回整体似乎是最好的解决方案。这可行吗?我已经尝试了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
正如我之前所说,在我的实际代码中,如果我由于数据帧的大小而尝试这样做,我只会得到一个内存错误
这里不需要合并,你可以将值从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的精度(