首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换数据格式

转换数据格式
EN

Stack Overflow用户
提问于 2022-08-18 20:15:38
回答 1查看 49关注 0票数 0

如何将以下数据从df1转换为df2?

代码语言:javascript
复制
df1 = pd.DataFrame([['a b c', '1 2 3', 2011], ['d e f', '4 5 6', 2012]])
#df1
           a       b     c
    0  a b c   1 2 3  2011
    1  d e f   4 5 6  2012


df2 = pd.DataFrame([['a', 1, 2011], ['b', 2, 2011], ['c', 3, 2011],
['d', 4, 2012], ['e', 5, 2012], ['f', 6, 2012]])

#df2
   a  b     c
0  a  1  2011
1  b  2  2011
2  c  3  2011
3  d  4  2012
4  e  5  2012
5  f  6  2012

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 20:39:04

你可以试一试如下。将.str.split应用于循环中的ab列,每次对结果进行exploding。这将使我们获得2 pd.Series,我们使用pd.concat将它们放在一起。在此之后,我们只需要分配col c,并重置索引。所以:

代码语言:javascript
复制
import pandas as pd

# adding columns=['a','b','c'] to match data in your post:
df1 = pd.DataFrame([['a b c', '1 2 3', 2011], ['d e f', '4 5 6', 2012]], columns=['a','b','c'])

res = pd.concat([df1[col].str.split(' ').explode() for col in ['a','b']], axis=1)

# change dtype for second col
res['b'] = res['b'].astype(int)

# assign column `c` and finally, reset index
res['c'] = df1['c']
res.reset_index(drop=True,inplace=True)

print(res)

   a  b     c
0  a  1  2011
1  b  2  2011
2  c  3  2011
3  d  4  2012
4  e  5  2012
5  f  6  2012
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73408928

复制
相关文章

相似问题

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