【问题标题】:Pandas not adding the column after index assigned Python3.5.0Pandas 未在分配索引后添加列 Python3.5.0
【发布时间】:2020-05-28 19:16:49
【问题描述】:

我试过以下说法:

import pandas as pd
df = pd.DataFrame(index=[i for i in range(5)])
df.columns = ["res"+str(i) for i in range(5)]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python35\lib\site-packages\pandas\core\generic.py", line 5080, in __setattr__
    return object.__setattr__(self, name, value)
  File "pandas\_libs\properties.pyx", line 69, in pandas._libs.properties.AxisProperty.__set__
  File "C:\Python35\lib\site-packages\pandas\core\generic.py", line 638, in _set_axis
    self._data.set_axis(axis, labels)
  File "C:\Python35\lib\site-packages\pandas\core\internals\managers.py", line 155, in set_axis
    'values have {new} elements'.format(old=old_len, new=new_len))
ValueError: Length mismatch: Expected axis has 0 elements, new values have 5 elements

不明白这是什么原因。如果我有索引,那么为什么没有添加该列?

【问题讨论】:

    标签: python pandas python-3.5


    【解决方案1】:
    import pandas as pd
    df = pd.DataFrame(index= range(5))
    for i in range(5):
      df['res'+str(i)]= '0'
    print (df)
    
      res0 res1 res2 res3 res4
    0    0    0    0    0    0
    1    0    0    0    0    0
    2    0    0    0    0    0
    3    0    0    0    0    0
    4    0    0    0    0    0
    

    【讨论】:

      【解决方案2】:

      我认为问题首先是没有创建列DataFrame,所以如果要分配列名它失败了。

      解决方案是将参数 columns 添加到 DataFrame 构造函数,索引应简化 - 仅分配 range

      df = pd.DataFrame(index= range(5), columns=["res"+str(i) for i in range(5)])
      print (df)
        res0 res1 res2 res3 res4
      0  NaN  NaN  NaN  NaN  NaN
      1  NaN  NaN  NaN  NaN  NaN
      2  NaN  NaN  NaN  NaN  NaN
      3  NaN  NaN  NaN  NaN  NaN
      4  NaN  NaN  NaN  NaN  NaN
      

      如果想在只有索引的 DataFrame 之后分配可以使用DataFrame.reindex:

      df = pd.DataFrame(index=range(5))
      df = df.reindex(["res"+str(i) for i in range(5)], axis=1)
      print (df)
         res0  res1  res2  res3  res4
      0   NaN   NaN   NaN   NaN   NaN
      1   NaN   NaN   NaN   NaN   NaN
      2   NaN   NaN   NaN   NaN   NaN
      3   NaN   NaN   NaN   NaN   NaN
      4   NaN   NaN   NaN   NaN   NaN
      

      【讨论】:

      • 我知道关于 columns 参数。但是在我的编程中,我希望首先分配索引。列数和列名稍后决定。因此我以这种方式编码,但它有缺陷。请您告诉我如何在创建数据框期间分配索引时稍后添加列?
      猜你喜欢
      • 2013-03-30
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 2023-01-08
      • 2021-04-11
      • 1970-01-01
      相关资源
      最近更新 更多