猿问

根据另一个数据框列值将数据框列和行合并到特定索引

对不起,如果标题不够清楚,我会用例子更好地解释自己:


dataframe1 = pd.DataFrame(columns=['UniqueNum', 'B' ,'A'])

dataframe1['UniqueNum'] = ['1a','2b', '3c']

dataframe1['A'] = ['2','6', '7']

dataframe1['B'] = ['3','88', '23']

print dataframe1

dataframe2 = pd.DataFrame(columns=['TestId', 'C' ,'D'])

dataframe2['TestId'] = ['1a','2b', '3c', '1a', '3c', '2b']

dataframe2['C'] = ['22','46', '47','22','46', '47']

dataframe2['D'] = ['13','88', '233','22','46', '47']

print dataframe2

打印是:


>>> 

  UniqueNum   B  A

0        1a   3  2

1        2b  88  6

2        3c  23  7

  TestId   C    D

0     1a  22   13

1     2b  46   88

2     3c  47  233

3     1a  22   22

4     3c  46   46

5     2b  47   47

>>> 

我想合并,以便输出数据帧看起来像这样:


      TestId   C    D   B  A

0     1a       22   13   3  2

1     2b       46   88  88  6

2     3c       47  233  23  7

3     1a       22   22   3  2

4     3c       46   46  23  7

5     2b       47   47  88  6

意思是将具有值的列添加到 dataframe2,对应于 dataframe1 中的 UniqueNum 与 dataframe2 中的 TestId 之间的匹配。谢谢


犯罪嫌疑人X
浏览 176回答 1
1回答

慕妹3242003

您可以DataFrame.merge与左连接和rename列一起使用:d = {'UniqueNum':'TestId'}df = dataframe2.merge(dataframe1.rename(columns=d), how='left', on='TestId')或创建的索引,而不是rename和更改参数left_on和right_index:df = dataframe2.merge(dataframe1.set_index('UniqueNum'),                       how='left',                       left_on='TestId',                       right_index=True)或指定两列和最后删除UniqueNum列:df = dataframe2.merge(dataframe1,                       how='left',                       left_on='TestId',                       right_on='UniqueNum').drop('UniqueNum', axis=1)print (df)  TestId   C    D   B  A0     1a  22   13   3  21     2b  46   88  88  62     3c  47  233  23  73     1a  22   22   3  24     3c  46   46  23  75     2b  47   47  88  6
随时随地看视频慕课网APP

相关分类

Python
我要回答