【发布时间】:2015-02-13 09:06:11
【问题描述】:
我想按部分子字符串对 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 计数创建一个新列。任何帮助将不胜感激。
【问题讨论】: