Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一个dataframe列值将dataframe列和行合并到特定索引_Python_Pandas_Dataframe_Merge - Fatal编程技术网

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)