我有一个融化的熊猫数据框(df1),如下所示:
ID protocol n
1000 A 3
1000 B 1
1100 A 10
1100 C 6
1110 C 3
每行中的信息必须用于采样另一个数据帧(df2),并从df2返回n个索引。为此,我编写了一个函数:
def sample_df_indices(row):
subset = df2.loc[(df2['ID'] == row.ID) & (df2['protocol'] == row.protocol), :]
return subset.sample(row.n).index.tolist()
应用以下内容会出现错误:
df1.apply(sample_df_indices, axis=1)
ValueError:无法将输入数组从形状(10)广播到形状(3)
将函数应用于df1.iloc [0:2 ,:]时,错误消失了,但是现在输出似乎以df1的形式广播了!
df1.iloc[0:2,:].apply(sample_df_indices, axis=1)
ID protocol n
0 2480681 4492585 3751667
1 4339442 4339442 4339442
这些值确实是df2的索引,但是以某种方式将它们压入df1。我期望返回的是一系列熊猫列表。
知道我在做什么错吗?我正在使用python 3.5.3和pandas 0.19.2