Python Pandas Merge每个只找到一个匹配

时间:2018-04-26 11:59:30

标签: python pandas dataframe join merge

我正在尝试合并两个数据框,一个有用户月度活动,另一个有月费,两个都有一个ID号。我想按月合并活动和费用。

all_dat = pd.merge(activity,fees,on=[id,year_month])

当我尝试在ID和时间(datetime64)上加入它们时,结果只有每个用户的第一个匹配项,日期为2017-1-1。 尽管我可以在两个数据帧中清楚地找到许多相同的日期时间,但合并的只有2017-1-1的行。

> print(set(all_dat[year_month]))
{Timestamp('2017-01-01 00:00:00')}

费用框架看起来像这样:

USER_ID   Name   Time       Fees
123       John   2016-12-01 300
123       John   2017-01-01 500
123       John   2017-02-01 400

活动一看起来像这样:

USER_ID   Name   Time       Activity
123       John   2017-01-01 20
123       John   2017-01-02 30

我想通过合并得到这样的东西:

USER_ID   Name   Time       Activity Fees
123       John   2017-01-01 20       500 
123       John   2017-01-02 30       400

但我只得到第一场比赛:

USER_ID   Name   Time       Activity Fees
123       John   2017-01-01 20       500 

我不认为这是一个dtype问题,可能出了什么问题?

1 个答案:

答案 0 :(得分:0)

我发现了问题,我在每个数据帧中以相反的顺序输入了月份和日期。由于1月1日是01-01,它是唯一一个获得任何比赛的人。请确保你的日期时间格式是统一的。