python - Pandas 数据框重排堆栈到两个值列(用于因子图)

标签 python pandas stack cumsum

我一直在尝试重新排列我的数据框以将其用作因子图的输入。原始数据如下所示:

  A B C  D
1 0 1 2 "T"
2 1 2 3 "F"
3 2 1 0 "F"
4 1 0 2 "T"
...

我的问题是如何将它重新排列成这种形式:

  col val val2
1  A   0  "T"
1  B   1  "T"
1  C   2  "T"
2  A   1  "F"
...

我在尝试:

df = DF.cumsum(axis=0).stack().reset_index(name="val")

但是这只会产生一个值列而不是两个..感谢您的支持

最佳答案

我会用 melt,你可以随意排序

pd.melt(df.reset_index(),id_vars=['index','D'], value_vars=['A','B','C']).sort_values(by='index')
Out[40]: 
    index  D variable  value
0       1  T        A      0
4       1  T        B      1
8       1  T        C      2
1       2  F        A      1
5       2  F        B      2
9       2  F        C      3
2       3  F        A      2
6       3  F        B      1
10      3  F        C      0
3       4  T        A      1
7       4  T        B      0
11      4  T        C      2

那么显然你可以随意命名列

df.set_index('index').rename(columns={'D': 'col', 'variable': 'val2', 'value': 'val'})

关于python - Pandas 数据框重排堆栈到两个值列(用于因子图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39918053/

相关文章:

python - 从 pandas 数据框中选择排序组的第一行

python - 保留 Pandas 中的超链接 - Excel 到数据框

python - 将参数传递给 pandas.DataFrame.transform 中的函数

c - 使用链表在堆栈上的推送操作失败

Android:清除 Activity 堆栈

c - 从多类型堆栈中弹出并获取值(value)

python - clf.score(X_test,Y_test) 如何用于线性回归?

python - opencv无法从索尼摄像机读取MP4文件

python - Selenium 与 Python/导航到下一页

python - 如何解决与 Series.fillna() 相关的 Pandas 问题?