【问题标题】:pd.merge is not merging on column valuespd.merge 未合并列值
【发布时间】:2021-01-06 16:29:29
【问题描述】:

我正在尝试在 retweeting_id 列上合并下面的这 2 个数据框

                retweeting_id           retweeting_username     retweeting_followers_count
207857          822215673812119553      WhiteHouse              26139914
        id                      user_id  retweet_count      tweet                              prediction   retweeting_id   username    
4682    1341442941642928129     64932923    191     RT @WhiteHouse: Over 80% of Americans say they...   2   8.222157e+17    Erika   
4683    1341443049067479041     64932923    332     Hope—and help—are on the way!\n\n"The first sh...   2   8.222157e+17    Erika   
5764    1339008184997064705     232598875   694     "Yesterday, the United States witnessed a medi...   1   8.222157e+17    Wm R Collie IV MD   
10065   1338931792800325634     1105109168  297     "Yesterday, the United States witnessed a medi...   1   8.222157e+17    President-elect ???????????????????????????????????? ????????????????     

但是当我使用时

df1 = pd.merge(test2, test1, on= 'retweeting_id')

我得到一个空的数据框。我认为第二个数据框中的科学记数法搞砸了,但我知道数字是一样的,因为我正在使用

test2 = df_merge2[(df_merge2['retweeting_id'] == 822215673812119553  )]

获取第二个数据帧。任何关于如何让这两者合并的想法,任何帮助将不胜感激。谢谢

【问题讨论】:

  • 换句话说,你的问题主要是关于科学记数法以及如何转换它们
  • 是的,但是当我将 retweeting_id 列转换为 int 时,由于某种原因它变为 -2147483648

标签: python pandas dataframe merge


【解决方案1】:

尝试在第二个数据帧上将 retweeting_id 更改为整数。然后,再次尝试合并。

【讨论】:

  • 我尝试使用这行代码 test2['retweeting_id'] = test2['retweeting_id'].map(np.uint64) 但随后将数字更改为 822215673812119552 这是实际数字 -1我知道这是因为我正在使用 test2 = df_merge2[(df_merge2['retweeting_id'] == 822215673812119553 )] 来生成数据帧。而且我不能只添加一个,因为它会弄乱它正常工作的其他较小的数字。
【解决方案2】:

我通过使用转换为字符串来修复它

test2.retweeting_id = test2.retweeting_id.map(lambda x: '{:.0f}'.format(x))

在两个数据帧上,现在它们正确合并。

【讨论】:

    猜你喜欢
    • 2020-04-13
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多