Python 基于另一个dataframe列值将dataframe列和行合并到特定索引
抱歉,如果标题不够清晰,我会用例子更好地解释自己:Python 基于另一个dataframe列值将dataframe列和行合并到特定索引,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,抱歉,如果标题不够清晰,我会用例子更好地解释自己: 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=['
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之间的匹配对应的列。
谢谢您可以使用左连接和重命名
列:
d = {'UniqueNum':'TestId'}
df = dataframe2.merge(dataframe1.rename(columns=d), how='left', on='TestId')
或者改为创建索引重命名
,并更改左
和右
索引的参数:
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)
您可以与左连接和
重命名
列一起使用:
d = {'UniqueNum':'TestId'}
df = dataframe2.merge(dataframe1.rename(columns=d), how='left', on='TestId')
或者改为创建索引重命名
,并更改左
和右
索引的参数:
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)