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

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

檢測并計算數據框中兩個列表中的模式

檢測并計算數據框中兩個列表中的模式

倚天杖 2023-06-13 14:53:40
我需要檢測并計算 UF_cadastral 變量中有多少來自 UF_med 變量的模式。那是我的數據集:df = {'id': [1,2,3],        'UF_med':[['SP', 'SC', 'PA'], ['SP'], ['AM', 'RJ', 'PA', 'RS']],        'UF_cadastral': [['SP', 'PA'], ['SP'], ['AM', 'RS']]}df = pd.DataFrame(df)df.head()雖然我需要計算模式,但我至少嘗試檢測一種模式。但是,代碼僅檢測 UF_med 變量的第一個模式。我用了那個代碼:df['Detect_Municipio'] = df.apply(lambda x: x['UF_med'] in x['UF_cadastral'], axis=1)結果應該是這樣的:df = {'id': [1,2,3],        'UF_med':[['SP', 'SC', 'PA'], ['SP'], ['AM', 'RJ', 'PA', 'RS']],        'UF_cadastral': [['SP', 'PA'], ['SP'], ['AM', 'RS']],        'Detect_Municipio':[2,1,2]}df = pd.DataFrame(df)
查看完整描述

3 回答

?
qq_笑_17

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

df['check']=[list(set(x).intersection(set(y)))\

  for x, y in zip(df.UF_med, df.UF_cadastral)]


  df['count']=df.check.str.len()






   id          UF_med   UF_cadastral     check     count

0   1      [SP, SC, PA]     [SP, PA]  [SP, PA]      2

1   2              [SP]         [SP]      [SP]      1

2   3  [AM, RJ, PA, RS]     [AM, RS]  [AM, RS]      2

或者只是替換list如下len:


df['amount']=[len(set(x).intersection(set(y))) for x, y in zip(df.UF_med, df.UF_cadastral)]

結果將是:


id            UF_med UF_cadastral  amount

0   1      [SP, SC, PA]     [SP, PA]       2

1   2              [SP]         [SP]       1

2   3  [AM, RJ, PA, RS]     [AM, RS]       2


查看完整回答
反對 回復 2023-06-13
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

嘗試改變

df['Detect_Municipio'] = df.apply(lambda x: x['UF_med'] in x['UF_cadastral'], axis=1)

df['Detect_Municipio'] = df.apply( 
   lambda x: len(set(x['UF_med']) & set(x['UF_cadastral'])), axis=1)

表格的元素是列表,因此您可以使用列表交集來獲取這些列表中的等效元素。Len 讓你得到匹配的數量。


查看完整回答
反對 回復 2023-06-13
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

我不知道你到底想完成什么,但這是我最好的猜測:


在兩個列表中查找重疊的列表:


df = {'id': [1,2,3],

        'UF_med':[['SP', 'SC', 'PA'], ['SP'], ['AM', 'RJ', 'PA', 'RS']],

        'UF_cadastral': [['SP', 'PA'], ['SP'], ['AM', 'RS']]}


output = [item for item in df["UF_med"] if item in df["UF_cadastral"]]

#output is [['SP']]

在所有列表中查找重疊的字符串:


df = {'id': [1,2,3],

        'UF_med':[['SP', 'SC', 'PA'], ['SP'], ['AM', 'RJ', 'PA', 'RS']],

        'UF_cadastral': [['SP', 'PA'], ['SP'], ['AM', 'RS']]}


uf_med = {item for sublist in df["UF_med"] for item in sublist}

uf_cadastral = {item for sublist in df["UF_cadastral"] for item in sublist}

output = [item for item in uf_med if item in uf_cadastral]

#output is ['AM', 'PA', 'RS', 'SP']

在相同索引列表中查找重疊的字符串:


df = {'id': [1,2,3],

        'UF_med':[['SP', 'SC', 'PA'], ['SP'], ['AM', 'RJ', 'PA', 'RS']],

        'UF_cadastral': [['SP', 'PA'], ['SP'], ['AM', 'RS']]}


output = [{item for item in list1 if item in list2} for list1, list2 in zip(df["UF_med"], df["UF_cadastral"])]

#output is [{'PA', 'SP'}, {'SP'}, {'AM', 'RS'}]


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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