【问题标题】:Renaming column name based on its value Pandas根据值 Pandas 重命名列名
【发布时间】:2020-07-05 20:04:12
【问题描述】:

我有以下数据框。

df 

col_1    col_2     col_3
min1     max1     target1
min2     max2     target2

我想根据列 col_1、col_2、col_3 的值分别重命名为 Min、Max 和 Target。结果,我想在下面得到一些东西。

Min     Max     Target
min1    max1    target1
min2    max2    target2

谁能告诉我一个使用 Pandas python 的简单技巧?

【问题讨论】:

  • 你说的“基于他们的价值”是什么意思? @资本
  • 不可能设置df.columns = ['Min','Max','Target']?
  • 例如,col_0 的值为 min1 和 min2。基于此 min1 和 min2 值将列重命名为 Min。因为它下面有这些名字。
  • @jezrael 我的桌子真的很大,我想创建一个规则来做到这一点。就你而言,这很简单。
  • @jezrael 你说它是重复的,你在我的帖子顶部提供了一个链接,但我的问题和你提供给我的解决方案完全不同。在发布此问题之前,我看到了该解决方案。你能把它删掉吗?

标签: python pandas dataframe


【解决方案1】:

好吧,我不确定您是否应该以这种方式重命名列,但您可以通过以下方式这样做。首先remove numbers from string,然后使用most common string。

from collections import Counter

cols = [Counter(df[col].str.replace('\d+', '')).most_common()[0][0].capitalize()
        for col in df.columns
        ]

df.columns = cols

输出:

    Min     Max     Target
0   min1    max1    target1
1   min2    max2    target2

【讨论】:

    猜你喜欢
    • 2019-09-26
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2021-09-30
    • 2020-10-03
    • 2019-12-01
    相关资源
    最近更新 更多