Python:如何根据重复行 reshape 数据框?

标签 python pandas

我有一个如下所示的数据框

df
     Name   Val1   Val2
0    Mark    0      3
1    Mark    2      3
2    Mark    5      6
3    Mark    7      8
4    Paul   -1      0
5    Paul    2     -3

我想要这样的东西

df
       Name  Val1_0    Val1_1   Val1_2   Val1_3  Val2_0    Val2_1   Val2_2   Val2_3
0      Mark    0          2       5        7       3         3        6        8
1      Paul   -1          2      Nan      Nan      0        -3      Nan     Nan

最佳答案

尝试使用 cumcount 然后使用 pivot

df['new'] = df.groupby('Name').cumcount().astype(str)
out = df.pivot(index = 'Name',columns = 'new', values=['Val1','Val2'])
out.columns = out.columns.map('_'.join)
out.reset_index(inplace=True)
Out[170]: 
   Name  Val1_0  Val1_1  Val1_2  Val1_3  Val2_0  Val2_1  Val2_2  Val2_3
0  Mark     0.0     2.0     5.0     7.0     3.0     3.0     6.0     8.0
1  Paul    -1.0     2.0     NaN     NaN     0.0    -3.0     NaN     NaN

关于Python:如何根据重复行 reshape 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68069873/

相关文章:

python - 使用滚动窗口准确检测数据帧中具有重复值(相同头部和相同尾部)的序列

python - 根据另一个中的值填充新的 pandas df 列

python - 遍历数据框的行并按组重新分配最小值

Python Uvicorn——获取SSL证书信息

Python - 如果找不到 json 元素如何继续

python - 合并 2 个数据框并匹配它们在 Pandas 中的值

python - 旋转并重命名 Pandas 数据框

python - 文件描述符在 Python 中的 fork 子进程中关闭

python - 如何在Python中将简单列表转换为数据框

python - 将元素列表映射到 pandas 中的元素类别?