我的数据框如下所示:
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
。然后,将分组的输出与原始数据帧合并,以得到联接的refseqno
,id
和xml
值。但是合并失败,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_output
和df_valid
都是令人讨厌的数据帧
<class 'dask.dataframe.core.DataFrame'>
<class 'dask.dataframe.core.DataFrame'>
我能知道如何解决吗?
答案 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')