首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连续订购3列?巨蟒熊猫

如何连续订购3列?巨蟒熊猫
EN

Stack Overflow用户
提问于 2020-11-03 05:02:01
回答 2查看 42关注 0票数 0

我有以下数据帧:

代码语言:javascript
复制
df = {names:["CARL","HERMES","LEO"], srv:[234,123,44], mx_l1:[10,12,8], mx_l2:[20,8,10], mx_l3:[12,23,11], label:["street","city","apto"]}

但是长度列(mx_l1、mx_l2、mx_l3)必须垂直排列,所以我保证它们与当前列的顺序。

我如何连续地对这些列进行排序,而不是放在单个列中,如下所示

代码语言:javascript
复制
name  |srv|max_lenght|label
CARL  |234|10        |street
CARL  |234|20        |city
CARL  |234|12        |apto
HERMES|123|12        |street
HERMES|234|8         |city
HERMES|234|23        |apto

我的代码

代码语言:javascript
复制
df2 = df.melt(id_vars=["srv", "name"],
              value_vars=["max_l1", "max_l2", "max_l3"],
              value_name="max_lenght")\
    .sort_values(by="srv")\
    .drop("variable", axis=1)\ 
    .reset_index(drop=True)
EN

回答 2

Stack Overflow用户

发布于 2020-11-03 05:11:53

IIUC,这是你想要的:

代码语言:javascript
复制
df = (
    df.melt(
        id_vars=["names", "srv", "label"],
        value_vars=["mx_l1", "mx_l2", "mx_l3"],
        value_name="max_length",
    )
    .sort_values(["names", "srv", "max_length"])
    .drop(columns="variable")
    .reset_index(drop=True)
)

print(df)
names  srv   label  max_length
    0    CARL  234  street          10
    1    CARL  234  street          12
    2    CARL  234  street          20
    3  HERMES  123    city           8
    4  HERMES  123    city          12
    5  HERMES  123    city          23
    6     LEO   44    apto           8
    7     LEO   44    apto          10
    8     LEO   44    apto          11
票数 1
EN

Stack Overflow用户

发布于 2020-11-03 05:15:04

使用set_indexstack

代码语言:javascript
复制
df_final = (df.set_index(['names','srv','label']).stack().droplevel(-1)
              .rename_axis(index={'label':'max_length'})
              .reset_index(name='label'))

Out[31]:
    names  srv max_length  label
0    CARL  234     street     10
1    CARL  234     street     20
2    CARL  234     street     12
3  HERMES  123       city     12
4  HERMES  123       city      8
5  HERMES  123       city     23
6     LEO   44       apto      8
7     LEO   44       apto     10
8     LEO   44       apto     11
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64653293

复制
相关文章

相似问题

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