【问题标题】:Stacking Pandas Dataframe without dropping row堆叠 Pandas 数据框而不丢弃行
【发布时间】:2019-08-08 04:03:45
【问题描述】:

目前,我有一个这样的数据框:

0 0 0 3 0 0
0 7 8 9 1 0
0 4 5 2 4 0

我的堆叠代码:

dt = dataset.iloc[:,0:7].stack().sort_index(level=1).reset_index(level=0, drop=True).to_frame()
dt['variable'] = pandas.Categorical(dt.index).codes+1
dt.rename(columns={0:index_column_name}, inplace=True)
dt.set_index(index_column_name, inplace=True)
dt['variable'] = numpy.sort(dt['variable'])

但是,当我堆叠它时它会丢弃第一行,我想保留标题/第一行,我该如何实现?

本质上,我丢失了第一行的数据(也就是列标题),我想保留它。

期望的输出:

value,variable
0 1
0 1
0 1
0 2
7 2
4 2
0 3
8 3
5 3
3 4
9 4
2 4
0 5
1 5
4 5
0 6
0 6
0 6

当前输出:

value,variable
0 1
0 1
7 2
4 2
8 3
5 3
9 4
2 4
1 5
4 5
0 6
0 6

【问题讨论】:

  • 你的预期输出是什么
  • @TylerWayne 我相信我们可以为您提供答案,但您需要为我们做更多的工作来解释您想要什么。
  • 我在帖子中添加了更多信息。
  • 这是 df.melt() 吗?
  • 或者df.values.flatten('F')

标签: python pandas


【解决方案1】:

为什么不使用@WeNYoBen 提到的df.melt

print(df)

   1  2  3  4  5  6
0  0  0  0  3  0  0
1  0  7  8  9  1  0
2  0  4  5  2  4  0

print(df.melt())

   variable  value
0         1      0
1         1      0
2         1      0
3         2      0
4         2      7
5         2      4
6         3      0
7         3      8
8         3      5
9         4      3
10        4      9
11        4      2
12        5      0
13        5      1
14        5      4
15        6      0
16        6      0
17        6      0

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 2019-05-17
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多