亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

pandas 中的子字符串函數

pandas 中的子字符串函數

絕地無雙 2023-12-08 17:09:30
檢查 pandas 字段中是否包含字符串的正確方法是什么?例如,我有:np.where('DIGITAL_SOURCE' in df['file_name'], 1, 0)但我收到 Pandas 的以下投訴:類型錯誤:“系列”對象是可變的,因此它們不能被散列正確的做法是什么substr in str?我相信正確的答案是使用str.contains,但在語法上遇到了一些問題。
查看完整描述

3 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

如注釋中所述,您可以使用.str.contains(注意regex=False, 不將字符串視為正則表達式):


df = pd.DataFrame({'file_name': ['DIGITAL_SOURCE', 'Other1', 'Other3']})


df['contains'] = df['file_name'].str.contains('DIGITAL_SOURCE', regex=False).astype(int)

print(df)

印刷:


        file_name  contains

0  DIGITAL_SOURCE         1

1          Other1         0

2          Other3         0


查看完整回答
反對 回復 2023-12-08
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

你應該做isin

np.where( df['file_name'].isin(['DIGITAL_SOURCE']), 1, 0)
#df['file_name'].isin(['DIGITAL_SOURCE']).astype(int)


查看完整回答
反對 回復 2023-12-08
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

您還可以應用 lambda,這樣:


 df['new_column'] = df.apply(lambda x: 1 if 'DIGITAL_SOURCE' in x['file_name'] else 0, axis=1 )

例子:


df = pd.DataFrame({"LOCATION":["USA","USA","USA","USA","JAPAN","JAPAN"],"file_name":["DIGITAL","DIGITAL","DIGITAL","DIGITAL","DIGITAL_SOURCE","DIGITAL_SOURCE"]})

 


    LOCATION    file_name

0   USA        DIGITAL

1   USA        DIGITAL

2   USA        DIGITAL

3   USA        DIGITAL

4   JAPAN      DIGITAL_SOURCE

5   JAPAN      DIGITAL_SOURCE



df['new_cl'] = df.apply(lambda x: 1 if 'DIGITAL_SOURCE' in x['file_name'] else 0, axis=1 )



    LOCATION    file_name      new_cl

0   USA          DIGITAL        0

1   USA          DIGITAL        0

2   USA          DIGITAL        0

3   USA          DIGITAL        0

4   JAPAN        DIGITAL_SOURCE 1

5   JAPAN        DIGITAL_SOURCE 1


查看完整回答
反對 回復 2023-12-08
  • 3 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號