将自定义功能应用于熊猫数据框会出现广播错误,如何解决?

时间:2019-02-27 14:46:23

标签: python pandas dataframe apply broadcast

我有一个融化的熊猫数据框(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

0 个答案:

没有答案