Y2010 Y2011 Y2012 Y2013 test
0 86574 77806 93476 99626 2
1 60954 67873 65135 64418 4
2 156 575 280 330 6
3 1435 1360 1406 1956 7
4 3818 7700 6900 5500 8
Run Code Online (Sandbox Code Playgroud)
有没有办法将此数据框的列从Y2010 ...重命名为2010 ..即删除初始的'Y'.我想使用正则表达式,因为我有很多这样的列.我试过这个:
df.rename(df.filter(regex='^Y\d{4}').columns.values, range(2010, 2013 + 1, 1))
Run Code Online (Sandbox Code Playgroud)
--EDIT:数据帧的包含不以'Y'开头的列
And*_*den 10
我用地图:
In [11]: df.columns.map(lambda x: int(x[1:]))
Out[11]: array([2010, 2011, 2012, 2013])
In [12]: df.columns = df.columns.map(lambda x: int(x[1:]))
In [13]: df
Out[13]:
2010 2011 2012 2013
0 86574 77806 93476 99626
1 60954 67873 65135 64418
2 156 575 280 330
3 1435 1360 1406 1956
4 3818 7700 6900 5500
Run Code Online (Sandbox Code Playgroud)
编辑:我忘记了最受欢迎的熊猫问题:
In [21]: df.rename(columns=lambda x: int(x[1:]))
Out[21]:
2010 2011 2012 2013
0 86574 77806 93476 99626
1 60954 67873 65135 64418
2 156 575 280 330
3 1435 1360 1406 1956
4 3818 7700 6900 5500
Run Code Online (Sandbox Code Playgroud)
如果你有其他列,我可能会写一个正确的函数(而不是lambda):
def maybe_rename(col_name):
if re.match(r"^Y\d{4}", col_name):
return int(col_name[1:])
else:
return col_name
In [31]: df.rename(columns=maybe_rename)
Out[31]:
2010 2011 2012 2013 test
0 86574 77806 93476 99626 2
1 60954 67873 65135 64418 4
2 156 575 280 330 6
3 1435 1360 1406 1956 7
4 3818 7700 6900 5500 8
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3241 次 |
| 最近记录: |