Python使用正则表达式对数据框列进行条件分类



我有一个数据框架:

group   id
A   009x
A   010x
B   009x
B   002x
C   002x
C   003x

如何创建一个新列new,该列group根据以下三个条件有条件地进行分类:

  1. 如果所有id值都包含ONLY009x010x,则归为g1
  2. 如果id值是009x010x中的一个AND另一个id值不属于009x010x,则归类为g2
  3. 否则,只打印id

期望结果:

group   id  new
A   009x    g1
A   010x    g1
B   009x    g2
B   002x    g2
C   002x    002x
C   003x    003x
data = {
'group': ['A', 'A', 'B', 'B', 'C', 'C'],
'id': ['009x', '010x', '009x', '002x', '002x', '003x'], 
}  
df = pd.DataFrame(data)  
df

我希望我没理解错你的问题。您可以使用.groupby()+自定义函数:

def categorize_fn(x):
tmp = x["id"].isin(["009x", "010x"])
if tmp.all():
x["new"] = "g1"
elif tmp.any():
x["new"] = "g2"
else:
x["new"] = x["id"]
return x

df = df.groupby("group", group_keys=False).apply(categorize_fn)
print(df)

打印:

group    id   new
0     A  009x    g1
1     A  010x    g1
2     B  009x    g2
3     B  002x    g2
4     C  002x  002x
5     C  003x  003x

最新更新