首页 > 解决方案 > Panda 系列插入错误缺少位置参数并且与索引长度不匹配

问题描述

我有一个列表,我试图为其添加一个值,但我不确定这样做的最佳方法。我已经读过这.insert()是最好的方法,但是在尝试了该方法的两种不同变体之后,我似乎无法让它发挥作用。

我试过了

df_full_modified = df_full['date', 'b_clicks', 'b_cpc'].insert(0, ['date', 'b_clicks', 'b_cpc'])

返回

TypeError: insert() missing 1 required positional argument: 'value'

columns并且还尝试为参数添加一个值

df_full_modified = df_full['date', 'b_clicks', 'b_cpc'].insert(0, ['date', 'b_clicks', 'b_cpc'], ['date', 'b_clicks', 'b_cpc'])

返回

ValueError: Length of values does not match length of index

我在尝试将数组映射到insert()方法时是否遗漏了什么?

这是数据框的格式df_full

[['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6], ...

我正在努力['date', 'b_clicks', 'b_cpc']做到这一点

[['date', 'b_clicks', 'b_cpc'], ['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6], ...

标签: pythonpandas

解决方案


IIUC 你已经有一个像这样的df:

          date  b_clicks  b_cpc
0  2018-01-01'        72   2.43
1  2018-01-02'       232   2.80
2  2018-01-03'       255   2.60

并且您想在顶部插入一行。df.insert 在指定位置插入一列,而不是一行。看起来您明白您可以使用列表执行此操作,因此您可以通过使用您指定的单词创建一个新列表来执行相同的操作,并将您已经拥有的 df 连接到新列表:

data = []
data.insert(0, {'date': 'date', 'b_clicks': 'b_clicks', 'b_cpc': 'b_cpc'})

df_full_modified = pd.concat([pd.DataFrame(data), df], ignore_index=True)

输出:

>>> df_full_modified
   b_clicks  b_cpc         date
0  b_clicks  b_cpc         date
1        72   2.43  2018-01-01'
2       232    2.8  2018-01-02'
3       255    2.6  2018-01-03'

推荐阅读