python - 重命名包含子字符串的列 - Pandas

标签 python pandas substring

我需要重命名包含特定子字符串的列。就我而言,我使用的数据包含名为特定日期 dd/mm/yyyy 的列。我想根据列名称的 yyyy 重命名该列(例如 30/06/2020 重命名 FY1920)。

我尝试过的方法如下:

d.rename(columns = lambda x: 'FY1920' if x.endswith('2019') else x)

也尝试过:

d.columns.str.contains('2019')
d.rename(lambda x:'FY1920' if any(k in x for k in keys) else x, axis=1)

我确信有一个简单的方法。有什么想法吗?

谢谢:)

最佳答案

rename 无法就地工作,您需要将结果分配回来:

df = pd.DataFrame('x', index=[0, 1], columns=['1/1/2019', '1/1/2020'])
df

  1/1/2019 1/1/2020
0        x        x
1        x        x
df2 = df.rename(columns=lambda c: 'FY1920' if c.endswith('2019') else c)
df2
 
  FY1920 1/1/2020
0      x        x
1      x        x 

另一种选择是使用set_axis或直接赋值:

df.set_axis(
    labels=['FY1920' if c.endswith('2019') else c for c in df], 
    axis=1, 
    inplace=True)
# or 
# df.columns = ['FY1920' if c.endswith('2019') else c for c in df]

df

  FY1920 1/1/2020
0      x        x
1      x        x

关于python - 重命名包含子字符串的列 - Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65332135/

相关文章:

Python Pandas SQL 风格左连接两个类列表

python - Pandas 按季度重新采样,并显示开始和结束月份

sql - Oracle Get Records where String not present as Sub string in other rows?

java - 检查两个单词,看单词a的开头是否等于单词b

c++ - 日期格式操作(YYYY/MM/DD-to-MM/DD/YYYY)

python - 如何在 python 中使用多重处理附加到类变量?

python - 拟合任何类型的模型时出现 scikit 内存错误

python - 如何更改 pinax(0.9a2) 模板?

python - 将列表写入字典

python - 在具有多个具有不同值的日期时间列的 DataFrame 中设置日期时间索引