【问题标题】:Why am I unable to add a column name to a data frame?为什么我无法将列名添加到数据框中?
【发布时间】:2017-01-01 20:15:26
【问题描述】:

我的目标

我想添加/替换列名,同时删除数据框末尾的Name, dtype

数据框

>>> df

0  Cheese
1  Bread
2  Ham
3  Egg
Name: Column1, dtype: object

我的尝试

我已尝试执行以下操作:

df.columns = ['Cart']

但是在输出df的时候,却和之前一模一样。

预期输出

   Cart
0  Cheese
1  Bread
2  Ham
3  Egg

【问题讨论】:

  • 你的对象是一个Series,而不是一个DataFrame。

标签: python python-2.7 pandas dataframe


【解决方案1】:

dfSeries,而不是 DataFrame

使用Series.to_frame:

df.to_frame('Cart')

或者:

df.rename('Cart').to_frame()

df = pd.Series(['Cheese','Bread','Ham','Egg'], name='Column1')
print (df)
0    Cheese
1     Bread
2       Ham
3       Egg
Name: Column1, dtype: object

print (type(df))
<class 'pandas.core.series.Series'>

print (df.to_frame('Cart'))
     Cart
0  Cheese
1   Bread
2     Ham
3     Egg

【讨论】:

  • 一如既往的好答案! ;-) 谢谢。
  • df = pd.DataFrame({'cart': df}).to_frame 方法相比有什么缺点吗?
  • @Imo - 是的,这是另一种解决方案。我尝试计时,一点点to_frame 更快:df = pd.concat([df]*100000).reset_index(drop=True) - In [139]: %timeit (df.to_frame('Cart')) 100 loops, best of 3: 4.38 ms per loop In [140]: %timeit (pd.DataFrame(dict(Cart=df))) 100 loops, best of 3: 4.52 ms per loop
  • @BenF97 - 谢谢。新年快乐;)
  • 也送给你! ;-)
【解决方案2】:

@jezrael 的答案就是你的答案。我只是想添加替代品

鉴于您的dfpd.Series,从头开始构建

pd.DataFrame(dict(Cart=df))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2022-11-07
    • 2020-09-30
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多