Python将日期(系列)列从一个数据帧添加到另一个数据帧

Python将日期(系列)列从一个数据帧添加到另一个数据帧,python,datetime,pandas,dataframe,series,Python,Datetime,Pandas,Dataframe,Series,我正在尝试将日期列从df1“广播”到df2 在df1中,我有所有用户的名字和他们的基本信息。 在df2中,我有一个用户购买的清单 假设我有一个更大的数据集(上面为示例创建的数据集),我如何将df1['DoB']列(!)添加到df2? 我尝试了concat()和merge(),但它们似乎都不起作用: 唯一可行的方法是将df1和df2合并在一起,然后删除不需要的列。但是如果我有几十个不需要的列,这将是非常有问题的 完整代码(包括引发错误的行): 任何帮助都将不胜感激。谢谢:) 我认为您需要使用

我正在尝试将日期列从df1“广播”到df2

在df1中,我有所有用户的名字和他们的基本信息。 在df2中,我有一个用户购买的清单

假设我有一个更大的数据集(上面为示例创建的数据集),我如何将df1['DoB']列(!)添加到df2?

我尝试了concat()和merge(),但它们似乎都不起作用:

唯一可行的方法是将df1和df2合并在一起,然后删除不需要的列。但是如果我有几十个不需要的列,这将是非常有问题的

完整代码(包括引发错误的行):

任何帮助都将不胜感激。谢谢:)


我认为您需要使用子集
[[['Name','DoB']]
-需要
名称
列进行匹配:

print (df1[['Name','DoB']])
    Name        DoB
0   John 2012-01-04
1   Jack 1991-02-03
2  Wendy 1986-10-04
3   Paul 1985-03-06

df2 = df2.merge(df1[['Name','DoB']], on='Name', how='left')
print (df2)
    Name        Purchase        DoB
0   John          fridge 2012-01-04
1  Wendy          coffee 1986-10-04
2   John  washingmachine 2012-01-04
3   Jack         tickets 1991-02-03
4  Wendy          iPhone 1986-10-04
5   Jack           stove 1991-02-03
6   John        notebook 2012-01-04
7   John          laptop 2012-01-04

使用by Series
s
的另一种解决方案:

s = df1.set_index('Name')['DoB']
print (s)
Name
John    2012-01-04
Jack    1991-02-03
Wendy   1986-10-04
Paul    1985-03-06
Name: DoB, dtype: datetime64[ns]

df2['DoB'] = df2.Name.map(s)
print (df2)
    Name        Purchase        DoB
0   John          fridge 2012-01-04
1  Wendy          coffee 1986-10-04
2   John  washingmachine 2012-01-04
3   Jack         tickets 1991-02-03
4  Wendy          iPhone 1986-10-04
5   Jack           stove 1991-02-03
6   John        notebook 2012-01-04
7   John          laptop 2012-01-04

使用类似这样的东西
pd.concat([df1,df2],axis=1)
我认为
map()
解决方案在添加单个列时是最有效的
s = df1.set_index('Name')['DoB']
print (s)
Name
John    2012-01-04
Jack    1991-02-03
Wendy   1986-10-04
Paul    1985-03-06
Name: DoB, dtype: datetime64[ns]

df2['DoB'] = df2.Name.map(s)
print (df2)
    Name        Purchase        DoB
0   John          fridge 2012-01-04
1  Wendy          coffee 1986-10-04
2   John  washingmachine 2012-01-04
3   Jack         tickets 1991-02-03
4  Wendy          iPhone 1986-10-04
5   Jack           stove 1991-02-03
6   John        notebook 2012-01-04
7   John          laptop 2012-01-04