python - 如何拆分列并将它们合并为行?

标签 python pandas dataframe jupyter-notebook

<分区>

我有一个数据框如下:

ID    Date   ColA1   ColB1   ColA2   ColB2   ColA3   ColB3 
id1   date1   1        2      3        4       5       6      
id2   date2   7        8      9        10      11      12

如何拆分列 ColA2ColB2ColA3ColB3 并将它们再次合并到数据集作为行(考虑 IDDate 列)?

预期输出:

ID   Date     ColA  ColB
id1  date1    1      2
id1  date1    3      4
id1  date1    5      6
id2  date2    7      8
id2  date2    9      10
id2  date2    11     12

谢谢!

最佳答案

你需要wide_to_long

pd.wide_to_long(df.reset_index(), stubnames = ['ColA', 'ColB'], i = 'index', j = 'value').reset_index(drop = True)

    ColA    ColB
0   1   2
1   7   8
2   3   4
3   9   10
4   5   6
5   11  12

编辑
没有 reset_index()

的输出
pd.wide_to_long(df.reset_index(), stubnames = ['ColA', 'ColB'], i = 'index', j = 'value')
            ColA    ColB
index   value       
0       1   1       2
1       1   7       8
0       2   3       4
1       2   9       10
0       3   5       6
1      3    11      12

编辑2
使用 OP 提供的新数据样本:

pd.wide_to_long(df, stubnames = ['ColA', 'ColB'], i = ['ID', 'Date'], j = 'value').reset_index([0,1])

    ID  Date    ColA    ColB
value               
1   id1 date1   1   2
2   id1 date1   3   4
3   id1 date1   5   6
1   id2 date2   7   8
2   id2 date2   9   10
3   id2 date2   11  12

关于python - 如何拆分列并将它们合并为行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55943641/

相关文章:

python - Urllib2 中的代理身份验证错误(Python 2.7)

python - 为什么pd.Series([np.nan])| pd.Series([True])计算是否为False?

python - 如何对 groupby 对象中没有时间列的基于时间的列进行排序

python - 在 SciPy 中生成一个又高又瘦的随机正交矩阵

python - TIA Bloomberg 请求处理无效代码

python - Pandas 中日期和 int 列的差异

python - 从 pyspark.sql 中的列表创建数据框

python - 查找连续相似值的最大值

python - 正则表达式检测双花括号之间的文本

python - Pandas groupby 和文件写入问题