【问题标题】:Merging data with the same index and deleting data without the same index合并具有相同索引的数据和删除没有相同索引的数据
【发布时间】:2020-02-05 19:58:13
【问题描述】:

数据帧 1:

index                    col1 
03-05-2018 12:00:00         3   
03-05-2018 13:00:00         4    
03-05-2018 14:00:00         3       
03-05-2018 15:00:00         3  
.......                    ..    

数据帧2

index                   col2 
03-05-2018 12:00:00        1    
03-05-2018 13:00:00        3    
03-05-2018 13:30:00        4    
03-05-2018 14:30:00        2    
03-05-2018 15:00:00        3   
.....                     ..

我想合并这些数据框并删除索引不匹配的值:

数据帧 3:

index                    col1 col2 
03-05-2018 12:00:00         3    1  
03-05-2018 13:00:00         4    3   
03-05-2018 15:00:00         3    3  
.........                  ..   .. 

有没有像 pd.merge 这样的函数来实现这个? (这是一个熊猫数据框,索引是 DateTime 对象) 谢谢!

编辑:我使用了 pd.merge(dataFrame1, dataFrame2, how = 'inner', on='index', left_index=True, right_index=True) 并且出现错误“无法将类型 'Timestamp' 与类型'进行比较诠释”。我真的很确定这两个索引都是时间戳

【问题讨论】:

  • 您的数据框是 pandas、pyspark 还是其他?
  • pd.merge(df_1, df_2, how = 'inner')
  • 我尝试了你的方法,它确实有效,但我最终得到了更多的值(预计数字大约在 55000 左右,但我得到了 523916715)

标签: python pandas merge


【解决方案1】:

我会简单地执行innerinner 连接基本上在 on 值匹配时执行连接,否则将其丢弃(出于此问题的目的将其删除)。

a = {'index':['A','C','D','G'],'col1':[3,4,3,3]}
b = {'index':['A','B','C','E','G'],'col2':[1,4,3,2,3]}
df_1 = pd.DataFrame(a)
df_2 = pd.DataFrame(b)
df_3 = df_1.merge(df_2,how='inner',on='index')
print(df_3)

输出:

  index  col1  col2
0     A     3     1
1     C     4     3
2     G     3     3

【讨论】:

  • 否决票能否提供有关为什么这没有帮助/有用的见解?
  • 对于明显重复或总体质量较低的问题的答案是否应该被否决,这是一个相当有争议的话题。当然,他们不应该被否决,但人们可以做他们想做的事。请参阅:meta.stackoverflow.com/a/255462/9307263。我通常将这样的单行答案发布为 cmets 以避免此问题¯\_(ツ)_/¯
  • 哦,好吧,我想至少很明显我们现在正在处理熊猫数据框。谢谢你的回答。
  • 感谢 cmets,但现在我收到此错误:“无法将 'Timestamp' 类型与 'int' 类型进行比较”,但我的两个索引都是时间戳...
  • 您能否编辑您的问题,以匹配您在此处评论的信息?
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 2020-11-27
  • 2016-07-31
  • 1970-01-01
  • 2021-07-28
相关资源
最近更新 更多