繁体   English   中英

python 数据帧中的多个条件

[英]multiple condition in python data frame

我的数据框看起来像 -

id          code    
1            AA
2            BB
3            CC
4            AA
5            GG
6            BB
7            NN
8            YY

我最终的 output 看起来像 -

id          code         group  
1            AA            A
2            BB            B
3            CC            A
4            AA            A
5            GG            G
6            BB            B
7            NN            other
8            YY            G

我的代码看起来像 -

col         = 'code'
conditions  = [ (df[col] == 'AA' & df[col] == 'CC'), (df[col] == 'GG' & df[col] == 'YY'), df[col] == 'BB' ]
choices     = [ 'A', 'G', 'B' ]

df["group"] = np.select(conditions, choices, default='other')

但是代码列是巨大的类别,大约40个。一些类别属于A,一些属于B,一些属于G,类别的rest属于其他。 我想,我需要在条件部分为每个类别创建一个列表,然后我们才能实现。 否则使用上面的代码很难做到。

Series.map与字典一起使用,然后将不匹配的值替换为默认值Series.fillna

d = {'AA':'A','CC':'A','GG':'G','YY':'G','BB':'B'}

df["group"] = df[col].map(d).fillna('other')

如果字典的格式不同,首先需要更改格式,如上述解决方案:

d1 = {'A': ['AA','CC'], 'G':['GG','YY'], 'B':['BB']}

#swap key values in dict
#http://stackoverflow.com/a/31674731/2901002
d = {k: oldk for oldk, oldv in d1.items() for k in oldv}
df["group"] = df[col].map(d).fillna('other')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM