我有一个列表,我正试图在其中预先添加一个值,但我不确定这样做的最佳方法。我读到.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'
并且还尝试添加CCD_ 2参数的值
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], ...
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'
如果我正确理解您最初的观点,那么所提供的列表将存储在pandas系列中,如:
a = pd.Series([['2018-01-01', '72', 2.43], ['2018-01-02', '232', 2.8], ['2018-01-03', '255', 2.6]])
如果是,那么您可以简单地为['date', 'b_clicks', 'b_cpc']
变量创建一个系列,例如:
b = pd.Series({['date', 'b_clicks', 'b_cpc']])
并最终将CCD_ 7与CCD_
b = b.append(a)
然而,使用这种方法,您将不得不在该系列的开头使用0 indeces。我不知道这是否困扰着你。