第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

根據(jù)多列中的值創(chuàng)建新的數(shù)據(jù)框列

根據(jù)多列中的值創(chuàng)建新的數(shù)據(jù)框列

嗶嗶one 2021-11-09 20:25:36
僅供參考,性能/速度對(duì)于這個(gè)問題并不重要。我有一個(gè)名為cost_table...的現(xiàn)有熊貓數(shù)據(jù)框+----------+---------+------+-------------------------+-----------------+| material | percent | qty  | price_control_indicator | acct_assign_cat |+----------+---------+------+-------------------------+-----------------+| abc111   | 1.00    |   50 | v                       | #               || abc222   | 0.25    | 2000 | s                       | #               || xyz789   | 0.45    |    0 | v                       | m               || def456   | 0.9     |    0 | v                       | #               || 123xyz   | 0.2     |    0 | v                       | m               || lmo888   | 0.6     |    0 | v                       | m               |+----------+---------+------+-------------------------+-----------------+我需要cost_source根據(jù)多個(gè)字段中的值添加一個(gè)字段。google 上出現(xiàn)的大多數(shù)答案都涉及列表推導(dǎo)式或三元運(yùn)算符,但那些僅包含基于一列中的值的邏輯。例如,cost_table['cost_source'] = ['map' if qty > 0 else None for qty in cost_table['qty']]這基于一列中的值起作用,但我不知道如何擴(kuò)展它以包含多列中的邏輯(或者甚至可能?)。它似乎也不是一個(gè)非??勺x/可維護(hù)的解決方案。我嘗試使用for in帶有if elif語句的循環(huán),但 in 的值cost_table['cost_source']保持不變并且適用None于所有行。但是,如果我在循環(huán)中打印每一行,則row['cost_source']具有所需的值。d = {  'material': ['abc111', 'abc222', 'xyz789', 'def456', '123xyz', 'lmo888'],  'percent': [1, .25, .45, .9, .2, .6],  'qty': [50, 2000, 0, 0, 0, 0],  'price_control_indicator': ['v', 's','v', 'v', 'v', 'v'],  'acct_assign_cat': ['#', '#', 'm', '#', 'm', 'm']}cost_table = pd.DataFrame(data=d)cost_table['cost_source'] = Nonefor index, row in cost_table.iterrows():  if (row['qty'] > 0) or (row['price_control_indicator'] == "s") or (row['acct_assign_cat'] == "#"):    row['cost_source'] = "map"  elif (row['percent'] >= 40) and (row['acct_assign_cat'] == "m"):    row['cost_source'] = "vendor"  else:    row['cost_source'] = None  print(row['cost_source']) # outputs map, vendor, or None as expectedprint(cost_table)哪個(gè)輸出...
查看完整描述

2 回答

?
catspeake

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊

使用df.apply(lambda x: fun(x), 但帶有參數(shù)axis=1,因此 lambda 函數(shù)逐行應(yīng)用(默認(rèn)為逐列)。


d = {

  'material': ['abc111', 'abc222', 'xyz789', 'def456', '123xyz', 'lmo888'],

  'percent': [100, 25, 45, 90, 20, 60],

  'qty': [50, 2000, 0, 0, 0, 0],

  'price_control_indicator': ['v', 's','v', 'v', 'v', 'v'],

  'acct_assign_cat': ['#', '#', 'm', '#', 'm', 'm']

}


cost_table = pd.DataFrame(data=d)


def process_row(row):

    if (row['qty'] > 0) or (row['price_control_indicator'] == "s") or (row['acct_assign_cat'] == "#"):

        return "map"

    elif (row['percent'] >= 40) and (row['acct_assign_cat'] == "m"):

        return "vendor"

    else:

        return None


cost_table['cost_source'] = cost_table.apply(lambda row: process_row(row), axis=1)


print(cost_table)

(我還糾正了一個(gè)不一致的地方:在數(shù)據(jù)procents中大概應(yīng)該乘以 100)


查看完整回答
反對(duì) 回復(fù) 2021-11-09
?
30秒到達(dá)戰(zhàn)場(chǎng)

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊

如果您想使用 np.select


cond1 = cost_table.qty.gt(0) | cost_table.price_control_indicator.eq('s') | cost_table.acct_assign_cat.eq('#')

cond2 = cost_table.percent.ge(0.4) & cost_table.acct_assign_cat.eq('m')

cost_table['cost_source'] = np.select([cond1, cond2], ['map', 'vendor'], default='None')

print(cost_table)


  material  percent   qty price_control_indicator acct_assign_cat cost_source

0   abc111     1.00    50                       v               #         map

1   abc222     0.25  2000                       s               #         map

2   xyz789     0.45     0                       v               m      vendor

3   def456     0.90     0                       v               #         map

4   123xyz     0.20     0                       v               m        None

5   lmo888     0.60     0                       v               m      vendor


查看完整回答
反對(duì) 回復(fù) 2021-11-09
  • 2 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)