【问题标题】:Renaming column names from a data set in pandas从熊猫中的数据集中重命名列名
【发布时间】:2021-03-20 08:54:46
【问题描述】:

我正在尝试重命名名称中有空格的 DataFrame 中的列名。 DataFrame (df) 由 45 列组成,大部分名称中有空格。例如:df.column.values [1] = 'Date Release',名称应改为'Date_Release'。我试过DataFrame.rename ()DataFrame.columns.values[] 但没有用。如果您能帮助我找出我做错了什么,我将不胜感激

for colmns in df:
    if ' ' in colmns:
        colmns_new = '_'.join(colmns.split())
        df = df.rename (columns = {"\"%s\"" %colmns : "\"%s\"" %colmns_new})   
    else:
        print (colmns)    

print (df)

或者这个:

for i in range (len(df.columns)):
    old= df.columns.values[i]
    if ' ' in old:
        new = '_'.join(old.split())
        df = df.columns.values[i] = ['%s' % new]
        print ("\"%s\"" % new) 
print (df)

错误:AttributeError:'list'对象没有属性'columns'

【问题讨论】:

  • 你可以给df.columns.str.replace(' ','_'),它会用下划线替换有空格的列

标签: python pandas rename


【解决方案1】:
import pandas as pd
df.columns = [i.replace(' ','_') for i in df.columns]

【讨论】:

  • 非常感谢。由于不是经验丰富的程序员,我苦苦寻找了两天的解决方案。
【解决方案2】:

您可以使用正则表达式将空格替换为下划线

这是一个示例 df,其中一些列包含空格,

cols = ['col {}'.format(i) for i in range(1, 10, 1)] + ['col10']
df = pd.DataFrame(columns = cols)

import re
df.columns = [re.sub(' ','_',i) for i in df.columns]

你得到

col_1   col_2   col_3   col_4   col_5   col_6   col_7   col_8   col_9   col10

【讨论】:

    【解决方案3】:

    你可以给df.columns = df.columns.str.replace(' ','_') 用下划线替换空格。

    这是一个例子。这里a1 列没有空格。但是 b 2c 3 列有一个空格。

    >>> df = pd.DataFrame({'a1': range(1,5), 'b 2': list ('abcd'), 'c 3':list('pqrs')})
    >>> df
       a1 b 2 c 3
    0   1   a   p
    1   2   b   q
    2   3   c   r
    3   4   d   s
    >>> df.columns = df.columns.str.replace(' ','_')
    >>> df
       a1 b_2 c_3
    0   1   a   p
    1   2   b   q
    2   3   c   r
    3   4   d   s
    

    【讨论】:

      猜你喜欢
      • 2014-11-23
      • 2017-01-26
      • 2018-08-16
      • 2021-02-03
      • 2021-08-15
      • 2019-05-25
      • 1970-01-01
      • 2017-11-02
      相关资源
      最近更新 更多