代码是这样的
数据长这样的:
图裂了 http://xximg.30daydo.com/picgo/20220304_001.png
然后
df = _df.set_index(['净值日期','code']).unstack()['日增长率']
df.index = pd.to_datetime(df.index,format='%Y-%m-%d')
print(df.head())
后面数据变成这样的:
http://xximg.30daydo.com/picgo/20220304_002.png
如果要获取某一天的数据,通过索引 df['2021-01-01'] 是会报错,说 key 不存在,而用 df['2021-01-01 00:00:00'] 也不行
但按月份索引是可以的 df['2021-01'] 获取 1 月份的数据
1
dongxiao 2022-03-04 09:37:53 +08:00
执行的时候应该有条 warning 信息吧:
```FutureWarning: Indexing a DataFrame with a datetimelike index using a single string to slice the rows, like `frame[string]`, is deprecated and will be removed in a future version. Use `frame.loc[string]` instead. ``` 所以你应该这么执行: ``` df.loc["2020-01-01"] ``` |
2
milkpuff 2022-03-04 11:25:35 +08:00
可能你真的没有'2021-01-01'这一天的数据。换一天试试?
|
5
milkpuff 2022-03-04 14:17:28 +08:00
奥,我猜,df['2021-01-01']默认从列里面找的,df['2021-01']转换成了 slice 从行里面找的。
代码在 pandas/core/frame.py -> DataFrame.__getitem__ 中,可以去研究一下。 |
6
Rush9999 2022-03-04 16:41:43 +08:00
df.index = pd.to_datetime(df.index,).strftime('%Y-%m-%d')
|