我想分割出熊猫时间序列中的非连续日期。我可以提取单个日期,并且可以对连续日期执行相同的操作,但是当我尝试提取非连续日期时,我将失败。下面出于重复目的,我给出了一个玩具数据集和我的代码。
toy_data.to_json()
'{"MMM":{"1459382400000":7335000000.0,"1467244800000":7493333333.3333330154,"1475193600000":7677666666.6666669846,"1483142400000":7582333333.3333330154,"1490918400000":7447666666.6666669846,"1498780800000":7726666666.6666669846,"1506729600000":7930666666.6666669846,"1514678400000":8111333333.3333330154,"1522454400000":7990000000.0,"1530316800000":7990000000.0},"AOS":{"1459382400000":638566666.6666666269,"1467244800000":646933333.3333333731,"1475193600000":672633333.3333333731,"1483142400000":688633333.3333333731,"1490918400000":712066666.6666666269,"1498780800000":739400000.0,"1506729600000":742100000.0,"1514678400000":756133333.3333333731,"1522454400000":768600000.0,"1530316800000":768600000.0}}'
toy_data.loc['2018-06-30']
Company
MMM 7.990000e+09
AOS 7.686000e+08
Name: 2018-06-30 00:00:00, dtype: float64
toy_data.loc[['2018-06-30', '2017-06-30']]
KeyError: "None of [['2018-06-30', '2017-06-30']] are in the [index]"
您的建议将不胜感激。
答案 0 :(得分:0)
由于您的index
是日期时间格式,因此它将失败,请尝试转换为str
df.index=df.index.astype(str)
df.loc[['2018-06-30', '2017-06-30']]
Out[193]:
AOS MMM
2018-06-30 768600000.0 7.990000e+09
2017-06-30 739400000.0 7.726667e+09
答案 1 :(得分:0)
您正尝试使用str
类型的定位符查询数据框。请注意,您的索引的类型为datetime64
:
toy_data.index.dtype
收益:
datetime64[ns]
您需要重铸为str
:
toy_data.index = toy_data.index.astype(str)
然后您可以使用str
类型进行查询:
toy_data.loc[['2017-06-30', '2018-06-30']]
哪个给:
MMM AOS
2017-06-30 7.726667e+09 739400000.0
2018-06-30 7.990000e+09 768600000.0