我有两个数据帧,它们应该具有相同的长度,但不是。
最近两天的股票价格和数据框的列价格,日期和交易量。
我现在想要删除日期不相等的数据帧的所有行,以便我可以更好地绘制和比较数据。
有人可以帮我解决我的问题吗?
谢谢和亲切的问候
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
答案 0 :(得分:1)
将numpy.union1d
用于相同日期,然后使用boolean indexing
按isin
进行过滤:
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