如何解决快捷合并失败,并出现keyerror
我的数据框如下所示:
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'>
我能知道如何解决吗?
解决方法
分组后,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')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。