删除日期不相同的数据帧行

时间:2017-11-23 08:25:05

标签: python pandas

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

最近两天的股票价格和数据框的列价格,日期和交易量。

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

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

谢谢和亲切的问候

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  

1 个答案:

答案 0 :(得分: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