首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用一个作为标题的多列中的数据帧中的拆分列表

使用一个作为标题的多列中的数据帧中的拆分列表
EN

Stack Overflow用户
提问于 2022-01-09 18:55:12
回答 2查看 69关注 0票数 1

假设我得到了一个熊猫数据,最后有两个列,其中包含一个列表(长度为>= 1)。第一个列("mode")有一个变量,应该附加到所需的标题名称,第二列("res")包含数据:

代码语言:javascript
代码运行次数:0
运行
复制
>>> df = pd.DataFrame([ 
    { 'c1': 850, 'c2': 'Ex', 'c3': 300.0, 'c4': 250, 'mode': [0, 1], 'res': [1.525, 1.321] },
    { 'c1': 850, 'c2': 'Ex', 'c3': 300.0, 'c4': 250, 'mode': [0, 1], 'res': [1.526, 1.311] }
])

有结果

代码语言:javascript
代码运行次数:0
运行
复制
    c1  c2     c3   c4    mode             res
0  850  Ex  300.0  250  [0, 1]  [1.525, 1.321]
1  850  Ex  300.0  250  [0, 1]  [1.526, 1.311]

是否有更好的方法来拆分dataframe df以获得所需的结果

代码语言:javascript
代码运行次数:0
运行
复制
    c1  c2  c3      c4   res_mode_0  res_mode_1
0  850  Ex  300.0   250       1.525       1.321
1  850  Ex  310.0   250       1.526       1.311

而不是使用循环?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-09 19:00:36

您可以尝试以下代码。优点是它可以工作,而不考虑列表中元素的数量。

代码语言:javascript
代码运行次数:0
运行
复制
df = pd.DataFrame([ 
    { 'c1': 850, 'c2': 'Ex', 'c3': 300.0, 'c4': 250, 'mode': [0, 1], 'res': [1.525, 1.321] },
    { 'c1': 850, 'c2': 'Ex', 'c3': 300.0, 'c4': 250, 'mode': [0, 1], 'res': [1.526, 1.311] }
])

split_df = pd.DataFrame(df["res"].tolist()).add_prefix("res_mode_")

df = pd.concat([df, split_df], axis=1).drop(["mode", "res"], axis=1)

输出:

代码语言:javascript
代码运行次数:0
运行
复制
df

    c1      c2  c3      c4      res_mode_0  res_mode_1
0   850     Ex  300.0   250     1.525       1.321
1   850     Ex  300.0   250     1.526       1.311
票数 0
EN

Stack Overflow用户

发布于 2022-01-09 19:02:57

最有效的方法;

代码语言:javascript
代码运行次数:0
运行
复制
pd.concat([pd.DataFrame(df.pop('your_column').values.tolist()), df], axis=1)

不幸的是,您必须在需要展开的每个列上使用此方法。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70644487

复制
相关文章

相似问题

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