gpt4 book ai didi

python - Pandas DF Pivot/Transform/Vectorize 操作

转载 作者:太空宇宙 更新时间:2023-11-04 08:59:55 25 4
gpt4 key购买 nike

不是 Pandas 方面的专家,但我想知道是否有一种 pythonic 方法可以将 Pandas DF 中的系列转换为包含由“1”和“0”数组组成的数据的列标题。

我有以下数据框:

df1 = pd.DataFrame({'x':[254,300,300,300,850,850,1000],
'y':[57,12,34,45,8,45,9]})

x 和 y 是相同大小的向量,我希望“x”是索引,“y”中的值是列标题,“0”和“1”代表存在/不存在x 行中的 y 值,所以我转换后的 DF 看起来或多或少像这样:

enter image description here

最佳答案

使用 unstack 可能会更快:

In [245]:

df1['z'] = 1
df1.groupby(['x', 'y']).count().unstack().fillna(0)
z
y 8 9 12 34 45 57
x
254 0 0 0 0 0 1
300 0 0 1 1 1 0
850 1 0 0 0 1 0
1000 0 1 0 0 0 0

In [256]:

%timeit pd.crosstab(df1['x'], df1['y'])
100 loops, best of 3: 8.72 ms per loop
In [261]:

%%timeit
df1['z'] = 1
df1.groupby(['x', 'y']).count().unstack().fillna(0)
100 loops, best of 3: 4.75 ms per loop
In [262]:

%%timeit
df1['z'] = 1
df1.groupby(['x', 'y']).sum().unstack().fillna(0)
100 loops, best of 3: 4.88 ms per loop

关于python - Pandas DF Pivot/Transform/Vectorize 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427105/

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