gpt4 book ai didi

python - 有没有一种好方法可以将函数累积应用于 pandas 系列字符串?

转载 作者:行者123 更新时间:2023-12-05 08:47:37 24 4
gpt4 key购买 nike

我有一个像这样的 Pandas 数据框

   x  y
0 0 a
1 0 b
2 0 c
3 0 d
4 1 e
5 1 f
6 1 g
7 1 h

我想做的是为 x 的每个值创建一个系列,该系列累积连接已经出现在 y 中的字符串,用于 的那个值x。换句话说,我想得到一个像这样的 Pandas 系列。

0          
1 a,
2 a,b,
3 a,b,c,
4
5 e,
6 e,f,
7 e,f,g,

我可以使用双 for 循环来完成:

dat = pd.DataFrame({'x': [0, 0, 0, 0, 1, 1, 1, 1], 
'y': ['a','b','c','d','e','f','g','h']})

z = dat['x'].copy()
for i in range(dat.shape[0]):
z[i] = ''
for j in range(i):
if dat['x'][j] == dat['x'][i]:
z[i] += dat['y'][j] + ","

但我想知道是否有更快的方法? Pandas expanding().apply() 似乎不适用于字符串,它是一个 open issue .但也许有一种不涉及 apply 的有效方法?

最佳答案

您可以在自定义函数中使用 shiftnp.cumsum:

def myfun(x):
y = x.shift()
return np.cumsum(y.fillna('').add(',').mask(y.isna(),'')).str[:-1]
df.groupby("x")['y'].apply(myfun)

0         
1 a
2 a,b
3 a,b,c
4
5 e
6 e,f
7 e,f,g
Name: y, dtype: object

关于python - 有没有一种好方法可以将函数累积应用于 pandas 系列字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67262173/

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