gpt4 book ai didi

python - pandas - 按部分字符串分组

转载 作者:行者123 更新时间:2023-12-02 21:19:36 25 4
gpt4 key购买 nike

我想按部分子字符串对 DataFrame 进行分组。这是一个示例 .csv 文件:

GridCode,Key
1000,Colour
1000,Colours
1001,Behaviours
1001,Behaviour
1002,Favourite
1003,COLORS
1004,Honours

到目前为止,我所做的是将文件导入为 df = pd.read_csv(sample.csv),然后我使用 df['Key'] 将所有字符串设为小写= df['Key'].str.lower().我尝试的第一件事是使用 GridCode 和 Key 进行分组:

g = df.groupby([df['GridCode'],df['Key']]).size()

然后展开并填充:

d = g.unstack().fillna(0)

生成的 DataFrame 是:

Key       behaviour  behaviours  colors  colour  colours  favourite  honours
GridCode
1000 0 0 0 1 1 0 0
1001 1 1 0 0 0 0 0
1002 0 0 0 0 0 1 0
1003 0 0 1 0 0 0 0
1004 0 0 0 0 0 0 1

现在我想做的是仅对包含子字符串“our”的字符串进行分组,在本例中避免仅使用颜色键,创建一个包含所需子字符串的新列。预期结果如下:

Key       'our'
GridCode
1000 2
1001 2
1002 1
1003 0
1004 1

我还尝试使用 masked = df['Key'].str.contains('our') 屏蔽 DataFrame,然后使用 df1 = df[mask] ,但我不知道如何使用新的 groupby 计数创建一个新列。非常感谢任何帮助。

最佳答案

>>> import re  # for the re.IGNORECASE flag
>>> df['Key'].str.contains('our', re.IGNORECASE).groupby(df['GridCode']).sum()
GridCode
1000 2
1001 2
1002 1
1003 0
1004 1
Name: Key, dtype: float64

也,而不是

df.groupby([df['GridCode'],df['Key']])

最好这样做:

df.groupby(['GridCode', 'Key'])

关于python - pandas - 按部分字符串分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28495905/

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