python - 如何取消连接 pandas 数据框?

标签 python pandas

我想使用一些需要连接两个数据帧的函数。这是示例:

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/

相关文章:

python - 如何解析文件?

python - Pandas read_csv 大文件将每一列放入一个

python - 如何在不先导出数据框的情况下写入 Excel 工作表?

python - 用python解析nmap xml报告

python - python中如何处理一些异常

python - PyQt:当自定义 QAbstractListModel 数据更改时如何更改 QComboBox 中的 currentIndex

python -django : why am I getting this error: AttributeError: 'method_descriptor' object has no attribute 'today' ?

python - 将数据框列分解为多行

python - Pandas 数据框 - 如何消除列中的重复单词

python - 根据其他列的值更改数据帧列中的值(值来自列表)