Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 如何合并两个数据帧并保持其中一个数据帧的相同顺序?_Python_Python 3.x_Pandas_Dataframe_Merge - Fatal编程技术网

Python 如何合并两个数据帧并保持其中一个数据帧的相同顺序?

Python 如何合并两个数据帧并保持其中一个数据帧的相同顺序?,python,python-3.x,pandas,dataframe,merge,Python,Python 3.x,Pandas,Dataframe,Merge,我有两个大的数据帧,我想用第一个(数据帧)的相同顺序合并它们 为了简单起见,我将创建虚拟数据 import pandas as pd data = {'name': pd.Series(['A','A','A','B',"C",'C','C']), 'text': pd.Series(['txt2','txt1','txt3','txt1','txt2','txt3','txt1']), 'desc': pd.Series(['text2',

我有两个大的数据帧,我想用第一个(数据帧)的相同顺序合并它们

为了简单起见,我将创建虚拟数据

import pandas as pd
data = {'name': pd.Series(['A','A','A','B',"C",'C','C']), 
        'text': pd.Series(['txt2','txt1','txt3','txt1','txt2','txt3','txt1']),
        'desc': pd.Series(['text2','text1','text3','text1','text2','text3','text1'])}
df = pd.DataFrame(data)
我所做的是过滤df中的值'A'和df2中的列A

df=df[df['name']=='A']
df2=df2[['A']]
然后我将df2表单A中的列重命名为文本,并进行了合并

df2.rename(columns={'A':'text'}, inplace=True)
我想对多个列执行相同的过程不仅仅是一个列,我有一个包含多个列的大型数据帧,如何以有效的方式执行

请参考下图以了解更多信息

先试试,然后


df2.rename(columns={'A':'text'}, inplace=True)
finalDF = pd.merge(df2, df, on=['text'], how='left')
df2_stack = df2.stack().reset_index(level=1)

  level_1     0
0       A  txt1
0       B  txt1
0       C  txt1
1       A  txt2
1       C  txt2
2       A  txt3
2       C  txt3

# rename columns after stack
df2_stack.columns = ["name", "text"] 

  name  text
0    A  txt1
0    B  txt1
0    C  txt1
1    A  txt2
1    C  txt2
2    A  txt3
2    C  txt3

df.merge(df2_stack, on=['name','text'])
  name  text   desc
0    A  txt2  text2
1    A  txt1  text1
2    A  txt3  text3
3    B  txt1  text1
4    C  txt2  text2
5    C  txt3  text3
6    C  txt1  text1