我想使用一些需要连接两个数据帧的函数。这是示例:
import numpy as np
import pandas as pd
data1 = np.array([['','Col1','Col2'],['1',1,2],['2',3,4]])
data1=pd.DataFrame(data=data1[1:,1:],index=data1[1:,0],columns=data1[0,1:])
data2=np.array([['','Col1','Col2'],['1',5,6],['2',7,8]])
data2=pd.DataFrame(data=data2[1:,1:],index=data2[1:,0],columns=data2[0,1:])
X=pd.concat([data1,data2],0)
X_transformed=func(X)
现在我想将 X_transformed 取消连接回原始 data1 和 data2。有没有办法做到这一点?
最佳答案
您可以将参数keys
添加到concat
用于区分每个DataFrame,然后通过loc
进行选择:
X=pd.concat([data1,data2],0, keys=[0,1])
print (X)
Col1 Col2
0 1 1 2
2 3 4
1 1 5 6
2 7 8
data11 = X.loc[0]
data22 = X.loc[1]
print (data11)
Col1 Col2
1 1 2
2 3 4
print (data22)
Col1 Col2
1 5 6
2 7 8
编辑:
更通用的解决方案:
data3=data2.iloc[[0]].rename({'1':'10'})
dfs = [data1,data2,data3]
X=pd.concat(dfs, keys=np.arange(len(dfs)))
print (X)
Col1 Col2
0 1 1 2
2 3 4
1 1 5 6
2 7 8
2 10 5 6
print (X.xs(0))
Col1 Col2
1 1 2
2 3 4
print (X.xs(1))
Col1 Col2
1 5 6
2 7 8
print (X.xs(2))
Col1 Col2
10 5 6
关于python - 如何取消连接 pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49422448/