【问题标题】:Drop rows of dataframe where dates are not the same删除日期不相同的数据框行
【发布时间】:2017-11-23 08:25:05
【问题描述】:

我有两个应该具有相同长度但不同的数据帧。

它是过去两天的股票价格,数据框包含收盘价、日期和成交量列。

我现在想删除日期不相等的数据框的所有行,以便更好地绘制和比较数据。

有人可以帮我解决我的问题吗?

感谢和亲切的问候

176   5338.8  2017-11-23T07:40:00.000000Z      81  
177   5336.7  2017-11-23T07:45:00.000000Z     176  
178   5342.8  2017-11-23T07:50:00.000000Z     109  
179   5339.8  2017-11-23T07:55:00.000000Z     114  
180   5342.8  2017-11-23T08:00:00.000000Z     285  
181   5337.4  2017-11-23T08:05:00.000000Z     363  
182   5333.9  2017-11-23T08:10:00.000000Z     174 

150 行与 180 行。我想删除日期不相等的所有行。

143   3549.3  2017-11-23T07:35:00.000000Z      14  
144   3547.3  2017-11-23T07:40:00.000000Z       4  
145   3548.3  2017-11-23T07:45:00.000000Z       8  
146   3551.3  2017-11-23T07:50:00.000000Z       5  
147   3548.3  2017-11-23T07:55:00.000000Z       9  
148   3550.0  2017-11-23T08:00:00.000000Z      42  
149   3548.0  2017-11-23T08:05:00.000000Z      89  
150   3548.0  2017-11-23T08:10:00.000000Z      13  

【问题讨论】:

  • 使用内连接:df1.merge(df2,on='date',how='inner')
  • 您要删除 df1 或 df2 中的行还是两者都删除?
  • 两者都是最好的,因为我并不总是知道差异在哪里。两者相等是唯一重要的事情

标签: python pandas


【解决方案1】:

numpy.union1d 用于相同的日期,然后使用boolean indexingisin 过滤:

a = np.union1d(df1['date'], df1['date'])
print (a)
['2017-11-23T07:40:00.000000Z' '2017-11-23T07:45:00.000000Z'
 '2017-11-23T07:50:00.000000Z' '2017-11-23T07:55:00.000000Z'
 '2017-11-23T08:00:00.000000Z' '2017-11-23T08:05:00.000000Z'
 '2017-11-23T08:10:00.000000Z']

df1 = df1[df1['date'].isin(a)]
print (df1)
          a                         date    b
176  5338.8  2017-11-23T07:40:00.000000Z   81
177  5336.7  2017-11-23T07:45:00.000000Z  176
178  5342.8  2017-11-23T07:50:00.000000Z  109
179  5339.8  2017-11-23T07:55:00.000000Z  114
180  5342.8  2017-11-23T08:00:00.000000Z  285
181  5337.4  2017-11-23T08:05:00.000000Z  363
182  5333.9  2017-11-23T08:10:00.000000Z  174

df2 = df2[df2['date'].isin(a)]
print (df2)
          a                         date   b
144  3547.3  2017-11-23T07:40:00.000000Z   4
145  3548.3  2017-11-23T07:45:00.000000Z   8
146  3551.3  2017-11-23T07:50:00.000000Z   5
147  3548.3  2017-11-23T07:55:00.000000Z   9
148  3550.0  2017-11-23T08:00:00.000000Z  42
149  3548.0  2017-11-23T08:05:00.000000Z  89
150  3548.0  2017-11-23T08:10:00.000000Z  13

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多