例如,我有下一個串列:
l = ['a', 'x', 't']
和資料框:
a = [{'sufix': 'a', 'qty': 5}, {'sufix': 'b', 'qty': 2}, {'sufix': 'c', 'qty': 7}, {'sufix': 'x', 'qty': 9}, {'sufix': 't', 'qty': 4}, {'sufix': 'p', 'qty': 1}]
df = pd.DataFrame(a)
print(df)
我需要什么,如果串列中的值 ->l在列中df['sufix']-> 創建新列df['yes']并從列中放置值df['qty'],否則df['yes'] = 0
我需要下一個結果:

uj5u.com熱心網友回復:
如果我理解正確,可能是這樣的:
df['yes'] = df['qty'][df['sufix'].isin(l)]
df['yes'] = df['yes'].fillna(0)
uj5u.com熱心網友回復:
像這樣:
df['yes'] = df.sufix.isin(l) * df.qty
isin()為該列回傳的布林值sufix將轉換為 0 表示 False,1 表示 True,并乘以 中的值qty。
輸出:
sufix qty yes
0 a 5 5
1 b 2 0
2 c 7 0
3 x 9 9
4 t 4 4
5 p 1 0
uj5u.com熱心網友回復:
from tokenize import String
import pandas as pd
import numpy as np
l = ['a', 'x', 't']
a = [{'sufix': 'a', 'qty': 5}, {'sufix': 'b', 'qty': "ww"}, {'sufix': 'c', 'qty': "a"}, {'sufix': 'x', 'qty': "9"}, {'sufix': 't', 'qty': 4}, {'sufix': 'p', 'qty': 1}]
df = pd.DataFrame(a).assign(yes=lambda x: np.where(x["qty"].isin(l), x["qty"],0))
還要處理文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/480586.html
上一篇:為什么pandas.concat()將(),添加到列名
下一篇:用熊貓分隔行之間的值
