我有一个 2500 行的数据框。我试图用 n 个元素的列表替换数据框的最后 n 行。我举了一个例子来说明我的问题和我想要的
df =
A
0 10.5
1 10.5
2 10.5
3 10.5
4 10.5
5 10.5
6 10.5
我的新列表有两个元素要放置在底部两行。
op_res = [20.5, 30.5]
我的代码和当前输出:
df.loc[-2:,'A'] = pd.Series(op_res)
df =
A
0 10.5
1 10.5
2 10.5
3 10.5
4 10.5
5 nan
6 nan
我的代码可能有什么问题? 我的代码和当前输出:
df =
A
0 10.5
1 10.5
2 10.5
3 10.5
4 10.5
5 20.5
6 30.5
最佳答案
试试这个:
df.A.to_numpy()[-2:]=op_res
df
A
0 10.5
1 10.5
2 10.5
3 10.5
4 10.5
5 20.5
6 30.5
代码中的问题:索引不匹配,因此当将其分配回来时,它将返回 nan,因为 pandas 分配将一如既往地匹配索引
pd.Series(op_res)
0 20.5
1 30.5
dtype: float64
原始 df 的索引
df.iloc[-2:,0]
5 10.5
6 10.5
Name: A, dtype: float64
从上面我们知道索引[0,1]不能与索引[5,6]匹配,所以所有赋值都会返回nan
。
关于Python数据框用n个元素的列表替换最后n行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61297944/