【问题标题】:Multiple values to pivot in dataframe要在数据框中旋转的多个值
【发布时间】:2021-10-15 12:14:57
【问题描述】:

我有一个数据集,我想在其中使用某些列作为值来旋转整个数据框。

数据

id  date    sun moon    stars   total   pcp base    final   status  space   galaxy
aa  Q1 21   5   1       2       8       0   200     41      5       1       1
aa  Q2 21   4   1       2       7       1   200     50      6       2       1

想要的

id  date    type    pcp base    final   final2  status  type2   final3
aa  Q1 21   sun     0   200     41      5       5       space   1
aa  Q1 21   moon    0   200     41      1       5       galaxy  1
aa  Q1 21   stars   0   200     41      2       5       space   1
aa  Q2 21   sun     1   200     50      4       6       space   2
aa  Q2 21   moon    1   200     50      1       6       galaxy  1
aa  Q2 21   stars   1   200     50      2       6       space   2

在做

df.drop(columns='total').melt(['id','date','final','final2','base','ppp'],var_name='type',value_name='ppp')

这在旋转第一组值(太阳、月亮等)时效果很好,但是不确定如何合并第二个“组”空间和星系。 任何建议表示赞赏

【问题讨论】:

  • 请看link
  • final3 列是如何设置的?

标签: python pandas numpy


【解决方案1】:

这是部分答案:

cols = ['id', 'date', 'pcp', 'base', 'final', 'status']

df = df.drop(columns='total')

df1 = df.melt(id_vars=cols, value_vars=['sun', 'moon', 'stars'], var_name='type')
df2 = df.melt(id_vars=cols, value_vars=['galaxy', 'space'], var_name='type2')

out = pd.merge(df1, df2, on=cols)

此时,您的数据框如下所示:

>>> out
    id   date  pcp  base  final  status   type  value_x   type2  value_y
0   aa  Q1 21    0   200     41       5    sun        5  galaxy        1
1   aa  Q1 21    0   200     41       5    sun        5   space        1
2   aa  Q1 21    0   200     41       5   moon        1  galaxy        1
3   aa  Q1 21    0   200     41       5   moon        1   space        1
4   aa  Q1 21    0   200     41       5  stars        2  galaxy        1
5   aa  Q1 21    0   200     41       5  stars        2   space        1
6   aa  Q2 21    1   200     50       6    sun        4  galaxy        1
7   aa  Q2 21    1   200     50       6    sun        4   space        2
8   aa  Q2 21    1   200     50       6   moon        1  galaxy        1
9   aa  Q2 21    1   200     50       6   moon        1   space        2
10  aa  Q2 21    1   200     50       6  stars        2  galaxy        1
11  aa  Q2 21    1   200     50       6  stars        2   space        2

现在的问题是如何设置total3 来减少数据帧?

【讨论】:

    猜你喜欢
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2018-10-12
    • 2021-12-25
    • 2021-04-21
    相关资源
    最近更新 更多