Chu*_*aka 2 monthcalendar python-2.7 pandas
在Python 2.7.11和Pandas 0.18.1中:
如果我们有以下csv文件:
YEAR,MONTH,ID
2011,JAN,1
2011,FEB,1
2011,MAR,1
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将其读取为Pandas数据框并将MONTH列转换为这样的字符串吗?
YEAR,MONTH,ID
2011,1,1
2011,2,1
2011,3,1
Run Code Online (Sandbox Code Playgroud)
某些熊猫函数,例如“ dt.strftime('%b')”似乎不起作用。有人可以开导吗?
我想最简单也是最快的方法之一就是创建一个映射字典和映射,如下所示:
In [2]: df
Out[2]:
YEAR MONTH ID
0 2011 JAN 1
1 2011 FEB 1
2 2011 MAR 1
In [3]: d = {'JAN':1, 'FEB':2, 'MAR':3, 'APR':4, }
In [4]: df.MONTH = df.MONTH.map(d)
In [5]: df
Out[5]:
YEAR MONTH ID
0 2011 1 1
1 2011 2 1
2 2011 3 1
Run Code Online (Sandbox Code Playgroud)
df.MONTH = df.MONTH.str.upper().map(d)如果不是所有MONTH值都大写,则可能要使用
另一种更慢但更可靠的方法:
In [11]: pd.to_datetime(df.MONTH, format='%b').dt.month
Out[11]:
0 1
1 2
2 3
Name: MONTH, dtype: int64
Run Code Online (Sandbox Code Playgroud)
更新:我们可以自动创建映射(感谢@Quetzalcoatl)
import calendar
d = dict((v,k) for k,v in enumerate(calendar.month_abbr))
Run Code Online (Sandbox Code Playgroud)
或者(仅使用熊猫):
d = dict(zip(range(1,13), pd.date_range('2000-01-01', freq='M', periods=12).strftime('%b')))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6999 次 |
| 最近记录: |