【问题标题】:Can't change empty index name in DataFrame无法更改 DataFrame 中的空索引名称
【发布时间】:2020-08-28 05:41:01
【问题描述】:

我有 100 多个 csv 文件,所有文件都包含一个具有相同索引和相同长度的表。我可以将它们连接成一个数据框并保存为 csv。

print(df)

         a   b   c   d
0    1   5   1   7   7
1    2   3   1   7   7
2    3   2   2   8   7
3    1   6   1   7   6

我想为现在空白的“初始索引”添加一个名称,但我找到的每个解决方案都不起作用... 我试过了:

df.rename(columns={'': 'initial'}, inplace=True)
df1 = df.rename(columns={'': 'initial'})
df1 = df.set_index('initial')
df1 = df.rename_axis("initial")

按原样打印页眉:

print([*df])
[' a b c d']

我正在使用 Python 3.7.3

编辑

感谢您的反馈。 Joe Ferndz 和 icecity96 解决方案都有效。他们最初并不只是因为 .csv 文件列是用空格而不是逗号分隔的,因此 DataFrame 只看到一列。添加 delim_whitespace=True

后问题消失了
pd.read_csv(file, delim_whitespace=True)

之前的输出:

print(*df)
[' a b c d']

之后的输出:

print([*df])
['a', 'b', 'c', 'd']

【问题讨论】:

  • 这看起来不像你从print([*df]) 得到的输出,除非你有一个带有标签' a b c d' 的单列并且一切都恰好打印得很完美。 df.index 是什么?
  • 原始数据框中有多少列。我认为是 5 还是 1?
  • 你能打印 (list(df)) 并告诉我它显示了什么吗?它会打印 ['','a','b','c','d'] 吗?
  • 发现我的错误后一切正常

标签: python pandas


【解决方案1】:

试试:

df.rename({df.columns[0]: 'initial'}, axis='columns', inplace=True)

输出:

>>> print([*df])
['', 'a', 'b']
>>> df.rename({df.columns[0]: 'initial'}, axis='columns', inplace=True)
>>> print([*df])
['initial', 'a', 'b']

【讨论】:

    【解决方案2】:

    如果你想重命名列,你就不能像这样简单吗?

    import pandas as pd
    
    df = pd.DataFrame({'' :[1,2,3,4],
                       'A':['A','B','C','D'],
                       'Z':[True, False, False, True]})
    print(df)
    
    df.columns = ['New','A','B']
    
    print(df)
    

    这里第一列被重命名为“New”,并且 Z 列也重命名为 B

    输出是:

    之前:

          A      Z
    0  1  A   True
    1  2  B  False
    2  3  C  False
    3  4  D   True
    

    之后:

       New  A      B
    0    1  A   True
    1    2  B  False
    2    3  C  False
    3    4  D   True
    

    【讨论】:

      猜你喜欢
      • 2019-06-18
      • 2023-03-11
      • 1970-01-01
      • 2016-10-24
      • 2019-01-08
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 2013-08-29
      相关资源
      最近更新 更多