Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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_Pandas_Dataframe - Fatal编程技术网

Python 如何根据行值组合两个不同长度的数据帧

Python 如何根据行值组合两个不同长度的数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下两个数据帧: 数据帧#1: 数据帧#2:_D列在此任务中不重要) 我希望在#1和#2的基础上创建一个新的数据帧#3: 数据帧#3: 数据帧#3的第一列和第二列与数据帧#1相同。对于第三列,我希望根据其用户id和dataframe 2中的索引分配一个位置。例如,对于数据帧#3中的第0行,由于其用户#id=1,我将检查数据帧#2中索引为1的位置,然后将该位置(本例中为“MA”)分配给用户 我搜索过使用concat、map、merge等函数的示例,但找不到类似的示例。有没有办法完成这项任务 非

我有以下两个数据帧:

数据帧#1:

数据帧#2:_D列在此任务中不重要)

我希望在#1和#2的基础上创建一个新的数据帧#3:

数据帧#3:

数据帧#3的第一列和第二列与数据帧#1相同。对于第三列,我希望根据其用户id和dataframe 2中的索引分配一个位置。例如,对于数据帧#3中的第0行,由于其用户#id=1,我将检查数据帧#2中索引为1的位置,然后将该位置(本例中为“MA”)分配给用户

我搜索过使用concat、map、merge等函数的示例,但找不到类似的示例。有没有办法完成这项任务

非常感谢你

试试看:

尝试:


基于您的问题,我不得不假设您希望在合并后删除列D。下面的代码可以工作

#Import Pandas
import pandas as pd

#Create dataframes: df1 and df2
df1 = pd.DataFrame({'user_id':{0: 1, 1:1, 2:1, 3:2, 4:2, 5:2}, 'animal':{0:'dog', 1:'cat', 2:'cow', 3:'dog', 4:'cat', 5:'cow'}})
df2 = pd.DataFrame({'location':{0:'CA', 1:'MA', 2:'AZ', 3:'CT'}, 'column_D':{0:1, 1:1, 2:1, 3:1}})
    
#Combine matching items from df2 to df1 by focus on 'user_id'column and drop column_D
df3 = df1.join(df2, on='user_id').drop('column_D', 1)

#Display new dataframe
df3

基于您的问题,我不得不假设您希望在合并后删除列D。下面的代码可以工作

#Import Pandas
import pandas as pd

#Create dataframes: df1 and df2
df1 = pd.DataFrame({'user_id':{0: 1, 1:1, 2:1, 3:2, 4:2, 5:2}, 'animal':{0:'dog', 1:'cat', 2:'cow', 3:'dog', 4:'cat', 5:'cow'}})
df2 = pd.DataFrame({'location':{0:'CA', 1:'MA', 2:'AZ', 3:'CT'}, 'column_D':{0:1, 1:1, 2:1, 3:1}})
    
#Combine matching items from df2 to df1 by focus on 'user_id'column and drop column_D
df3 = df1.join(df2, on='user_id').drop('column_D', 1)

#Display new dataframe
df3

您希望进行所谓的“连接”,您希望在用户id上进行连接,其中用户id是第二个数据帧索引的键。这在SQL land中是一项非常常见的任务,因此您可以查找大量关于联接的教程,但我认为可以使用
df1.join(df2,on=“user\u id”)
创建
df1
作为索引。使用
df1.set\u index()
。然后将
index
上的两个
df1
df2
合并,以获得
df3
,这就是所谓的“连接”。您希望在用户id上连接,其中用户id是第二个数据帧索引中的一个键。这在SQL land中是一项非常常见的任务,因此您可以查找大量关于联接的教程,但我认为可以使用
df1.join(df2,on=“user\u id”)
创建
df1
作为索引。使用
df1.set\u index()
。然后将
index
上的两个
df1
df2
合并,得到
df3
    user_id       animals       location
0         1         'dog'           'MA'
1         1         'cat'           'MA'
2         1         'cow'           'MA'
3         2         'dog'           'AZ'
4         2         'cat'           'AZ'
5         2         'cow'           'AZ'
...
df["location"] = df1.user_id.map(df2.location)

    user_id animals location
0      1    'dog'   'MA'
1      1    'cat'   'MA'
2      1    'cow'   'MA'
3      2    'dog'   'AZ'
4      2    'cat'   'AZ'
5      2    'cow'   'AZ'
#Import Pandas
import pandas as pd

#Create dataframes: df1 and df2
df1 = pd.DataFrame({'user_id':{0: 1, 1:1, 2:1, 3:2, 4:2, 5:2}, 'animal':{0:'dog', 1:'cat', 2:'cow', 3:'dog', 4:'cat', 5:'cow'}})
df2 = pd.DataFrame({'location':{0:'CA', 1:'MA', 2:'AZ', 3:'CT'}, 'column_D':{0:1, 1:1, 2:1, 3:1}})
    
#Combine matching items from df2 to df1 by focus on 'user_id'column and drop column_D
df3 = df1.join(df2, on='user_id').drop('column_D', 1)

#Display new dataframe
df3