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