我敢肯定这已经被问过了,但是我找不到正确的方法去做。我有一个带有日期时间索引的数据框
df = col2
test
| 04-05-2018 | 56 |
| 04-06-2018 | 23 |
| 04-07-2018 | 87 |
| 04-08-2018 | 11 |
我想做的是访问datetime索引的month属性(并由此创建一个新列)。我试图仅使用print(df['test'].datetime.month)
访问该属性,但是收到了预期的KeyError(我知道数据框的标题是'test'而不是索引本身,我只是不知道该怎么做)。
我们非常感谢您的帮助,在此先感谢您。
答案 0 :(得分:1)
喜欢吗?
import pandas as pd
ind = ['04-05-2018','04-06-2018', '04-07-2018', '04-08-2018']
col2 = [56,23,87,11]
df = pd.DataFrame(col2, index = ind, columns = ['col2'])
Out[1]:
col2
04-05-2018 56
04-06-2018 23
04-07-2018 87
04-08-2018 11
df['month'] = pd.to_datetime(df.index).month
df
Out[2]:
col2 month
04-05-2018 56 4
04-06-2018 23 4
04-07-2018 87 4
04-08-2018 11 4
df['month_s'] = [str(mnth).zfill(2) for mnth in pd.to_datetime(df.index).month]
df
Out[3]:
col2 month month_s
04-05-2018 56 4 04
04-06-2018 23 4 04
11-07-2018 87 4 04
04-08-2018 11 4 04
答案 1 :(得分:1)
希望这就是您想要的:
import pandas as pd
data = [['04-05-2018',56] ,
['04-06-2018',23],
['04-07-2018',87],
['04-08-2018',11]]
df = pd.DataFrame(data, columns =['test', 'col2'])
df.set_index('test', inplace=True)
df['MONTH'] = pd.to_datetime(df.index).month
df
col2 Month
test
04-05-2018 56 4
04-06-2018 23 4
04-07-2018 87 4
04-08-2018 11 4
答案 2 :(得分:1)
import pandas as pd
data = [['04-05-2018',56] ,
['04-06-2018',23],
['04-07-2018',87],
['04-08-2018',11]]
df = pd.DataFrame(data, columns =['test', 'col2'])
df.set_index('test', inplace=True)
df
col2
test
04-05-2018 56
04-06-2018 23
04-07-2018 87
04-08-2018 11
df=dfT.reset_index()
df['Months'] = list(dfT['test'].astype(str).str[3:5])
df
col2 Months
test
04-05-2018 56 05
04-06-2018 23 06
04-07-2018 87 07
04-08-2018 11 08
完成✅✅