我有一个pandas数据帧,日期信息存储为字符串。我想直接从每个日期中提取月份,所以我尝试了这个:
import pandas as pd
df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['month'] = df['month'].str[5,7]
print(df)
这给出了以下输出
date units month
0 2015-04-16 5 NaN
1 2014-05-01 6 NaN
NaN的dtype是浮动的,我不知道为什么。为什么这不会创建带有子串的另一列?
答案 0 :(得分:3)
如果您尝试将每个字符串切片以从5到7获取子字符串,则需要:
,而不是,
:
>>> df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
>>> df['month'] = df['date'].str[5:7]
>>> print(df)
date units month
0 2015-04-16 5 04
1 2014-05-01 6 05
答案 1 :(得分:1)
我认为您的问题是您的切片无效:
In [7]:
df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['date'].str[5,7]
Out[7]:
0 NaN
1 NaN
Name: date, dtype: float64
与此比较:
t='2015-04-16'
t[5,7]
这提出了一个:
TypeError:字符串索引必须是整数
我想你想要:
In [18]:
df = pd.DataFrame([['2015-04-16', 5], ['2014-05-01', 6]],columns = ['date','units'])
df['month'] = df['date'].str[5:7]
df
Out[18]:
date units month
0 2015-04-16 5 04
1 2014-05-01 6 05
因为这是一个无效的操作,pandas正在返回NaN