向空数据框插入或添加新列不起作用

时间:2017-08-30 09:28:35

标签: pandas

当我添加或插入新列以清空DF时,它不起作用。它起作用了。

>>> dfTemp=pd.DataFrame()
    >>> dfTemp
    Empty DataFrame
    Columns: []
    Index: []
    >>> dfTemp.insert(0, 'Company' , 'Apple')
    >>> dfTemp.insert(1, 'Device' , 'ipad')
    >>> dfTemp
    Empty DataFrame
    Columns: [Company, Device]
    Index: []
    >>> dfTemp = pd.DataFrame({"Year": [2017]})
    >>> dfTemp.insert(0, 'Company' , 'Apple')
    >>> dfTemp.insert(1, 'Device' , 'ipad')
    >>> dfTemp
      Company Device  Year
    0   Apple   ipad  2017

    >>> dfTemp = pd.DataFrame({"Year": [2017]})
    >>> dfTemp['Company']='Apple'
    >>> dfTemp['Device']='ipad'
    >>> dfTemp
       Year Company Device
    0  2017   Apple   ipad
   >>> dfTemp=pd.DataFrame()
   >>> dfTemp['Company']='Apple'
   >>> dfTemp['Device']='ipad'
   >>> dfTemp
   Empty DataFrame
   Columns: [Company, Device]
   Index: []

使其适用于空DF的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

insert失败,因为索引标签不存在,因此在您的第二个示例中dfTemp.insert(1, 'Device' , 'ipad')失败,因为1不存在,但上一行插入工作得很好。

对于其他情况,出于同样的原因,您可以使用lociloc进行setting with enlargement

In[23]:
dfTemp.loc[0, 'Company']= 'apple'
dfTemp

Out[23]: 
  Company
0   apple

看起来.append更适合您的使用案例。

In[26]:
dfTemp = dfTemp.append({'Company':'apple', 'Year':2017}, ignore_index=True)
dfTemp

Out[26]: 
  Company    Year
0   apple  2017.0

请注意,迭代生长df是非执行的