gpt4 book ai didi

python - 使用正则表达式重命名 Pandas 数据框中的列

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:45 25 4
gpt4 key购买 nike

   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

有没有办法将此数据框的列从 Y2010... 重命名为 2010.. 即删除初始的“Y”。我想使用正则表达式,因为我有很多这样的列。我试过这个:

df.rename(df.filter(regex='^Y\d{4}').columns.values, range(2010, 2013 + 1, 1))

——编辑:数据框 doees 包含不以“Y”开头的列

最佳答案

我会使用 map :

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

编辑:我忘记了 most-popular pandas question :

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

如果您有额外的列,我可能会编写一个适当的函数(而不是 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

关于python - 使用正则表达式重命名 Pandas 数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32751512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com