快捷合并失败,并出现keyerror

时间:2020-09-22 20:55:07

标签: python-3.x pandas dask

我的数据框如下所示:

id  refseqno    xml
0   31110671    42  <my_xml> ...
1   34470834    6   <my_xml>...
2   35025043    19  <my_xml>...
3   37360536    7   <my_xml>...
4   44152211    10  <my_xml>...
5   45322759    15  <my_xml>..

我想对id进行分组,以便将相同的id分组在一起,并合并refseqno的值。基本上每个id将具有多个refseqno。然后,将分组的输出与原始数据帧合并,以得到联接的refseqnoidxml值。但是合并失败,KeyError: 'id'

df_valid = df_output.groupby(['id']).refseqno.apply(lambda grp: ','.join(grp), meta=(('join', str)))
df_valid = df_valid.to_frame()
df_merge = dd.merge(df_output, df_valid, on=['id'], how='inner')
df_merge.compute()

此外,df_outputdf_valid都是令人讨厌的数据帧

<class 'dask.dataframe.core.DataFrame'>
<class 'dask.dataframe.core.DataFrame'>

我能知道如何解决吗?

1 个答案:

答案 0 :(得分:1)

分组后,df_valid数据帧将id作为索引而不是列,这就是为什么合并不起作用的原因。 针对您的问题的几种可能的解决方案:

  • df_output数据帧上设置索引,然后执行联接:

df_merge = df_output.set_index("id").join(df_valid, how="inner")

  • 重置df_valid数据帧上的索引,以使id成为合并的列:

df_merge = dd.merge(df_output.reset_index(), df_valid, on=['id'], how='inner')