首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Pandas中将单元格分解为多行

在Pandas中将单元格分解为多行
EN

Stack Overflow用户
提问于 2021-01-20 04:51:36
回答 1查看 39关注 0票数 2

如何在Pandas中将单元格中的内容分解为多行?

代码语言:javascript
复制
ID  CODES
A   {"1407273790":5,"1801032636":20,"1174813554":1,"1215470448":2,"1053754655":4,"1891751228":1}
B   {"1497066526":19,"1639360563":16,"1235107087":11,"1033522925":18}
C   {"1154348191":8,"1568410355":4}

如何将“”中的代码分解为多行?我正在查看的输出如下表所示

代码语言:javascript
复制
ID  CODES
A   1407273790
A   1801032636
A   1174813554
A   1215470448
A   1053754655
A   1891751228
B   1497066526
B   1639360563
B   1235107087
B   1033522925
C   1154348191
C   1568410355
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 04:57:58

获取keys()后即可使用explodekeys()返回一个tuple,所以我使用[*]将其转换为一个列表,这是explode所需的格式。您也可以使用list()

代码语言:javascript
复制
df = pd.DataFrame({'ID' : ['A', 'B', 'C'],
'CODES' : [{"1407273790":5,"1801032636":20,"1174813554":1,"1215470448":2,"1053754655":4,"1891751228":1},
{"1497066526":19,"1639360563":16,"1235107087":11,"1033522925":18},
{"1154348191":8,"1568410355":4},]})
df['CODES'] = df['CODES'].apply(lambda x: [*x.keys()]) # or lambda x: list(x.keys()))
df = df.explode('CODES')
df
Out[1]: 
  ID       CODES
0  A  1407273790
0  A  1801032636
0  A  1174813554
0  A  1215470448
0  A  1053754655
0  A  1891751228
1  B  1497066526
1  B  1639360563
1  B  1235107087
1  B  1033522925
2  C  1154348191
2  C  1568410355

根据SammyWemmy的评论,您可以使用以下命令尝试两种方法的性能:

代码语言:javascript
复制
%timeit df['CODES'].apply(lambda x: list(x.keys()))
%timeit [entry.keys() for entry in df.CODES]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65799353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档