【发布时间】:2017-03-07 10:38:49
【问题描述】:
我正在尝试将日期列从 df1“广播”到 df2。
在 df1 我有所有用户的名字和他们的基本信息。 在 df2 中,我有一个用户购买的清单。
假设我有一个更大的数据集(上面为示例创建),我如何将 df1['DoB'] 列添加到 df2?
我已经尝试过 concat() 和 merge() 但它们似乎都不起作用:
似乎唯一可行的方法是将 df1 和 df2 合并在一起,然后删除我不需要的列。但是如果我有几十个不需要的列,那将是非常有问题的。
完整代码(包括引发错误的行):
import pandas as pd
df1 = pd.DataFrame(columns=['Name','Age','DoB','HomeTown'])
df1['Name'] = ['John', 'Jack', 'Wendy','Paul']
df1['Age'] = [25,23,30,31]
df1['DoB'] = pd.to_datetime(['04-01-2012', '03-02-1991', '04-10-1986', '06-03-1985'], dayfirst=True)
df1['HomeTown'] = ['London', 'Brighton', 'Manchester', 'Jersey']
df2 = pd.DataFrame(columns=['Name','Purchase'])
df2['Name'] = ['John','Wendy','John','Jack','Wendy','Jack','John','John']
df2['Purchase'] = ['fridge','coffee','washingmachine','tickets','iPhone','stove','notebook','laptop']
df2 = df2.concat(df1) # error
df2 = df2.merge(df1['DoB'], on='Name', how='left') #error
df2 = df2.merge(df1, on='Name', how='left')
del df2['Age'], df2['HomeTown']
df2 #that's how i want it to look like
任何帮助将不胜感激。谢谢你:)
【问题讨论】:
-
使用类似
pd.concat([df1,df2], axis=1)的东西
标签: python datetime pandas dataframe series