我想在定义的位置将一些numpy数组附加到数据帧。这是我试图解释我的问题的例子。
假设我有这样的数据帧:
dfr = pd.DataFrame()
cols = ['a','b','c','d','e','f']
dfr = pd.DataFrame(columns = cols)
和这个数组:
vv = [0., 1., 2., 3.]
我想把它附加在第2列和第5列之间。这是可能的,在一个简单的方法。
我试过这样做:
dfr.loc[0,2:5] = vv[:]
这不起作用。我正在尝试其他的解决办法,但没有一个适合我。
有什么建议吗?
vv中有4个元素,但dfr.loc[0,2:5]中只有3个元素。请运行dfr.loc[0,1:5] = vv[:]
或dfr.loc[0,2:6] = vv[:]
。
2:5
意味着2,3和4个索引,但列表有4个值,这就是为什么你会得到错误时,试图使用上面的代码
dfr.loc[0,2:5] = vv[:]
ValueError: could not broadcast input array from shape (4,) into shape (3,)
如果形状匹配,那么就可以了:
dfr.loc[0,2:] = vv[:]
a b c d e f
0 NaN NaN 0.0 1.0 2.0 3.0
然而,你会得到FutureWarning
而尝试以上,你可以使用.iloc
来摆脱警告:
dfr.iloc[0,2:] = vv[:]