使用python pandas中的dataframe df:
Product_ID | Category | Sub_Cat
32432 0 Gadget
24085 Big Tech Computer
54398 Small Tech Gadget
97456 0 Computer
我正在开发一个新列,如果它不是0,我将使用Category值覆盖Sub_Cat值。
这是我要找的输出:
Product_ID | Category | Sub_Cat | Cat_for_Analysis
32432 0 Gadget Gadget
24085 Big Tech Computer Big Tech
54398 Small Tech Gadget Small Tech
97456 0 Computer Computer
谢谢!
答案 0 :(得分:1)
您可以在ffill
' 0'之后使用replace
到np.nan
df['Cat_for_Analysis']=df.replace('0',np.nan)[['Category','Sub_Cat']].bfill(1).iloc[:,0]
df
Out[876]:
Product_ID Category Sub_Cat Cat_for_Analysis
0 32432 0 Gadget Gadget
1 24085 BigTech Computer BigTech
2 54398 SmallTech Gadget SmallTech
3 97456 0 Computer Computer
答案 1 :(得分:1)
使用np.where
:
df['Cat_for_Analysis'] = np.where(df['Category'] == '0', df['Sub_Cat'], df['Category'])
或等效的否定版本,如果它根据您的问题更直观地理解:
df['Cat_for_Analysis'] = np.where(df['Category'] != '0', df['Category'], df['Sub_Cat'])
任一方法的结果输出:
Product_ID Category Sub_Cat Cat_for_Analysis
0 32432 0 Gadget Gadget
1 24085 Big Tech Computer Big Tech
2 54398 Small Tech Gadget Small Tech
3 97456 0 Computer Computer
答案 2 :(得分:1)
您也可以使用申请。
df["Cat_for_Analysis"] = df.apply(lambda row: row["Category"] if row["Category"] != 0 else row["Sub_Cat"], axis=1)