我在下面有df:
name flag
company night night
company day day
dark night night
night day both night
night day both night
如何更改標志列以同時表示名稱列中同時存在單詞的所有行?
期望的輸出:
name flag
company night night
company day day
dark night night
night day both both
night day both both
使用了下面的方法,但都使用了行中的第一個值,并且沒有正確映射到適用的行
方法1:
r = '(both|night|day)'
c = dict(both = 'Both', night='Night', day='Day')
dfc['Identifier'] = dfc['NAME'].str.lower().str.extract(r, expand=False).map(c)
方法2:
conditions = [dfc["NAME"].str.lower().str.contains("night"),
dfc["NAME"].str.lower().str.contains("day"),
dfc["NAME"].str.lower().str.contains("both")]
values = [ 'night', 'day', 'both']
dfc["identifiter"] = np.select(conditions, values, default=np.nan)
感謝幫助
uj5u.com熱心網友回復:
您可以使用str.contains創建一個布爾系列并將其用作np.where將值分配給“標志”列的條件:
import numpy as np
df['flag'] = np.where(df['name'].str.contains('both'), 'both', df['flag'])
另一種選擇是loc:
df.loc[df['name'].str.contains('both'), 'flag'] = 'both'
輸出:
name flag
0 company night night
1 company day day
2 dark night night
3 night day both both
4 night day both both
uj5u.com熱心網友回復:
另一種方法是使用串列推導。
dfc['Identifier']=['both' if 'both' in y else x for x,y in zip(df['flag'],df['name'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/427584.html
標籤:Python python-3.x 熊猫 数据框
下一篇:Pandas重新索引到更高解析度
