2017-01-01 88 views
2

我的目标为什么我无法将列名添加到数据框?

我想添加/替换列名,同时在数据帧的结束消除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 
+1

你的对象是一个系列,而不是一个数据帧。 – BrenBarn

回答

3

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 
+0

一如既往的绝佳回答! ;-) 谢谢。 – LearningToPython

+0

'df = pd.DataFrame({'cart':df})'与'.to_frame'方法有什么不同? – lmo

+1

@Imo - 是的,这是另一种解决方案。我尝试计时和一点点'to_frame'快:'DF = pd.concat([DF] * 100000).reset_index(降= TRUE)' - '在[139]:%timeit(df.to_frame('车')) 100个循环,最好的3:每个循环4.38 ms In [140]:%timeit(pd.DataFrame(dict(Cart = df))) 100个循环,最好的3:每循环4.52 ms – jezrael

2

@ jezrael的答案是你的答案。我只是想从头开始添加替代

在给出您的dfpd.Series

pd.DataFrame(dict(Cart=df)) 
相关问题