Pandas - Pivot/stack/unstack/melt

标签 pandas dataframe pivot transpose

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

<头>
名称 值 1 值 2
A 100 101
A 100 102
A 100 103
B 200 201
B 200 202
B 200 203
C 300 301
C 300 302
C 300 303

我正在努力解决这个问题:

<头>
名称 值 1 值 2 值 3 值 4 值 5 值 6
A 100 101 100 102 100 103
B 200 201 200 202 200 203
C 300 301 300 302 300 303

这是我迄今为止尝试过的; dataframe.stack() dataframe.unstack() dataframe.melt(id_vars=['name'])

我需要通过确保转置数据;

  1. 第一行保持原样,但与相同名称关联的每个后续值都应转置为列。
  2. 虽然第二个值 B(for.ex)应将其关联值转换为 A 列值下的新值,但不应完全形成单独的值。

最佳答案

试试:

def fn(x):
    vals = x.values.ravel()
    return pd.DataFrame(
        [vals],
        columns=[f"value {i}" for i in range(1, vals.shape[0] + 1)],
    )


out = (
    df.set_index("name")
    .groupby(level=0)
    .apply(fn)
    .reset_index()
    .drop(columns="level_1")
)
print(out.to_markdown())

打印:

<头>
名称 值 1 值 2 值 3 值 4 值 5 值 6
0 A 100 101 100 102 100 103
1 B 200 201 200 202 200 203
2 C 300 301 300 302 300 303

关于Pandas - Pivot/stack/unstack/melt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72320964/

相关文章:

python - 根据日期值向月份列添加值

python - 在 Python 中解码一列 Base64 字符串

database - 如何像在dolphindb中一样在clickhouse中实现 `pivot`

SQL 数据透视表错误使用变量给出语法错误

python-3.x - 如何检查嵌套列表是否存在以及如果存在则取消嵌套?

python - 在python中从字符串创建变量

python - Pandas dataframe applymap并行执行

python - 删除行并替换 pandas 中的字符

pandas - 创建 Pandas 数据帧,每个元素都是从其他数据帧创建的元组

MySQL 将行转为动态数量的列