我正在尝试在下面的df中创建现有变量(col1)的子集。我的新变量(col2)只有" a"对应于" a"在col1。其余值应标记为"其他"。请帮忙。
COL1
一个
b
ç
一个
b
ç
一个
col2的
一个
其他
其他
一个
其他
其他
答案 0 :(得分:0)
使用numpy.where
:
df['col2'] = np.where(df['col1'] == 'a', 'a', 'Other')
#alternative
#df['col2'] = df['col1'].where(df['col1'] == 'a', 'Other')
print (df)
col1 col2
0 a a
1 b Other
2 c Other
3 a a
4 b Other
5 c Other
6 a a
答案 1 :(得分:0)
方法1 :np.where
这是最直接的方法:
df['col2'] = np.where(df['col1'] == 'a', 'a', 'Other')
方法2 :pd.DataFrame.loc
df['col2'] = 'Other'
df.loc[df['col1'] == 'a', 'col2'] = 'a'
方法3 :pd.Series.map
df['col2'] = df['col1'].map({'a': 'a'}).fillna('Other')
通过numpy
提取df['col1'].values
数组表示,可以优化大多数这些方法。
答案 2 :(得分:0)
没有任何额外的库,因为问题没有用pandas标记,也没有numpy:
您可以将列表理解与if和else一起使用:
col1 = ['a', 'b', 'c', 'a', 'b', 'c', 'a']
col2 = [ x if x=='a' else 'others' for x in col1 ]