python - 如何在数据框中将列分成多行?

标签 python pandas

我有如下数据框

A B C D E F G H G H  I  J  K
1 2 3 4 5 6 7 8 9 10 11 12 13

我想要这样的结果

A B C D E F G H 
1 2 3 4 5 6 7 8 
1 2 3 4 5 6 7 9
1 2 3 4 5 6 7 10
1 2 3 4 5 6 7 11
1 2 3 4 5 6 7 12
1 2 3 4 5 6 7 13

就像结果列“G~K”位于“H”列下

我该怎么做?

最佳答案

您需要使用 cummax 调整列,然后在 melt 之后,我们使用 cumcount 创建附加键,然后在此处进行 reshape ,我正在使用 unstack ,您可以使用 pivotpivot_table

s=pd.Series(df.columns)
s[(s>='H').cummax()==1]='H'
df.columns=s
df=df.melt()

yourdf=df.set_index(['variable',df.groupby('variable').cumcount()]).\
          value.unstack(0).ffill()
yourdf
variable    A    B    C    D    E    F    G     H
0         1.0  2.0  3.0  4.0  5.0  6.0  7.0   8.0
1         1.0  2.0  3.0  4.0  5.0  6.0  7.0   9.0
2         1.0  2.0  3.0  4.0  5.0  6.0  7.0  10.0
3         1.0  2.0  3.0  4.0  5.0  6.0  7.0  11.0
4         1.0  2.0  3.0  4.0  5.0  6.0  7.0  12.0
5         1.0  2.0  3.0  4.0  5.0  6.0  7.0  13.0

关于python - 如何在数据框中将列分成多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544844/

相关文章:

python - 列表理解迭代多个可迭代对象

python - Matplotlib - 在单元格中创建一个带有线图的表格?

python - 根据使用 Pandas 的条件动态改变日期

python - 如何选择只有正值的列?

python - 添加/修改 Pandas DataFrame 的索引

java - 与 Java 一起使用时,Python 提供了哪些额外功能?

python - 检查整数的连续性并返回唯一值

python:将年/月/日/时/分/秒转换为自 1970 年 1 月 1 日以来的 # 秒

python - ValueError 尝试遍历

python - 如何计算同一列中的值