从版本0.13开始,可以通过引用.loc或.ix中尚未包含在数据帧中的索引来附加到数据帧。请参阅documentation。
然后我很困惑为什么这条线路失败了:
all_treatments.loc[originalN:newN,:] = all_treatments.loc[0:newrowcount,:]
这会生成ValueError:
ValueError: could not broadcast input array from shape (12) into shape (0)
此处all_treatments.shape = (53, 12)
,originalN = 53
,newN = 64
,all_treatments.loc[originalN:newN,:].shape = (0,12)
,all_treatments.loc[0:newrowcount,:].shape = (12,12)
。
在这里设置放大的正确方法是什么?
答案 0 :(得分:1)
您只能通过放大使用单行或列进行设置。您正在设置范围。
.loc / .ix / []操作可以在为该轴设置不存在的键时执行放大。
对于您的使用,类似这样的东西应该可以扩展具有新空白行的数据框:
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
>>> df
a b
0 1 4
1 2 5
2 3 6
new_row_count = 2
for new_row, old_row in enumerate(range(new_row_count), start=len(df)):
df.ix[new_row] = None
>>>df
a b
0 1 4
1 2 5
2 3 6
3 NaN NaN
4 NaN NaN
如果你想从原始数据帧中复制数据,我通常会连接。
df = pd.concat([df, df.iloc[:2, :]], ignore_index=True)