python - 合并两个不同形状的数据框中的列

标签 python

我有两个 df,例如:

  dfA
Out[191]: 
   a  b  c  d
0  N  M  1  3
1  S  F  2  4
1  S  F  2  4

还有一个这样的:

dfM
Out[192]: 
   X  Y   d1   d2   d3
0  N  M  0.1  0.2  0.3
1  S  F  1.0  2.0  3.0

现在我想合并这两个以获得像这样的 df:

   a  b  c  d  e
0  N  M  1  3  0.1
1  S  F  2  4  1.0
1  S  F  2  4  2.0

合并后的 df 具有来自 dfM d 列的值,这些列是根据 dfA 行重复的次数填充的。 如何在 python 中执行此操作?

最佳答案

您可以使用cumcount对于 merge 的辅助计数器列左连接,第二个 DataFrame 被 melt reshape :

dfA['groups'] = dfA.groupby(['a','b']).cumcount()

dfM1 = dfM.melt(['X','Y'], value_name='e')
dfM1['groups'] = dfM1.groupby(['X','Y']).cumcount()
print (dfM1)
   X  Y variable    e  groups
0  N  M       d1  0.1       0
1  S  F       d1  1.0       0
2  N  M       d2  0.2       1
3  S  F       d2  2.0       1
4  N  M       d3  0.3       2
5  S  F       d3  3.0       2

d = {'X':'a', 'Y':'b'}
df = (dfA.merge(dfM1.rename(columns=d), on=['a','b', 'groups'], how='left')
         .drop(['variable','groups'],axis=1))
print (df)
   a  b  c  d    e
0  N  M  1  3  0.1
1  S  F  2  4  1.0
2  S  F  2  4  2.0

关于python - 合并两个不同形状的数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52771623/

相关文章:

python - python逐行读取CSV文件

python2.7类型错误: not all arguments converted during string formatting

python - LOAD DATA LOCAL INFILE sqlalchemy 和 python 到 mysql 数据库

Python打印全文文件

python - 如何使用 Python 在 ElasticSearch 中创建嵌套索引?

python - 使用 Function 优化设置 Pandas 列

python - 将 .pkl 文件转换为 .csv 文件

python - Django-如何创建在序列化器中设置深度的关系对象?

python - 如何在Python中创建shopify脚本标签

python - scikit学习中的线性回归