gpt4 book ai didi

python - 使用 Pandas 将列按组方式 reshape 为行

转载 作者:行者123 更新时间:2023-11-28 21:03:30 24 4
gpt4 key购买 nike

我有一个df

id    name   value
1 abc 10
1 qwe 23
1 zxc 12
2 sdf 10
2 wed 23
2 abc 12
2 mnb 11

我想将这个数据框 reshape 为:

id    n1    n2    n3    n4
1 abc qwe zxc 0
2 sdf wed abc mnb

我们可以看到 id=1 有 3 行,id=2 有 4 行。因此,如果发生这种情况,请替换最后一列 n4=0。

This is test dataframe, it may happen that, for a id there might by 1-2 rows too.

这就像我们在 R - dcast 中做的一样。我们如何在 Pandas 中做到这一点?

最佳答案

可能矫枉过正

f, u = pd.factorize(df.id.values)
b = np.bincount(f)
n, m = u.size, b.max()
c = np.arange(f.size) - np.arange(n).repeat(b) * (m - 1)

v = np.zeros((n, m), dtype=object)
v[f, c] = df.name.values

pd.DataFrame(
v, pd.Index(u, name='id'),
['n{}'.format(i) for i in range(1, m + 1)]
).reset_index()

id n1 n2 n3 n4
0 1 abc qwe zxc 0
1 2 sdf wed abc mnb

关于python - 使用 Pandas 将列按组方式 reshape 为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46420430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com