根据索引值创建熊猫列

时间:2019-10-24 19:36:36

标签: python pandas dataframe

我敢肯定这已经被问过了,但是我找不到正确的方法去做。我有一个带有日期时间索引的数据框

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'而不是索引本身,我只是不知道该怎么做)。

我们非常感谢您的帮助,在此先感谢您。

3 个答案:

答案 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

完成✅✅

相关问题