首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >只枢轴列中的某些值

只枢轴列中的某些值
EN

Stack Overflow用户
提问于 2018-01-16 03:17:37
回答 1查看 129关注 0票数 2

我有这样的数据格式( key_的数量总是等于value_的数量,但是这个数字是事先不知道的):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    firstid    secondid    key_1    key_2    key_3    ...    key_n    value_1    value_2    value_3    ...    value_n
      1          one         A        B        C       ...    Z        alpha    beta          gamma    ...    omega

我要把它们重新塑造成这种形式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
first_id    second_id    key    value
1             one         A    alpha
1             one         B    beta
1             one         C    gamma
1             one         ...    ...
1             one         Z    omega

像这样用melt ..。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
value_vars = [x for x in df.columns if x.startswith('key_') or x.startswith('value_')]

df = pd.melt(df, id_vars=["firstid",
                            "secondid"],
              value_vars=value_vars)

...I得到了以下结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   firstid secondid variable  value
0        1      one    key_1      A
1        1      one    key_2      B
2        1      one    key_3      C
3        1      one    key_n      Z
4        1      one  value_1  alpha
5        1      one  value_2   beta
6        1      one  value_3  gamma
7        1      one  value_n   omega

这显然仍然是一个步骤,但我不知道在融化,枢轴,堆叠等丛林中哪一个。任何解释或线索都会受到欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 03:20:10

我觉得你需要:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df = df.set_index(['firstid','secondid'])
df.columns = df.columns.str.split('_', expand=True)
df = df.stack().reset_index(level=2, drop=True).reset_index()
print (df)
   firstid secondid key  value
0        1      one   A  alpha
1        1      one   B   beta
2        1      one   C  gamma
3        1      one   Z   zeta
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48280003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文