[英]Pandas, fill values with dict keys based on a condition
我有以下數據幀:
Item Weight Bags Must quantity must quantity bags column length assigned bag
0 planes bag 8.50 planes v 1 1 6 None
1 Full Bandolera 3.76 planes v 3 2 6 None
2 tail 0.30 planes 0 3 2 6 None
3 central wing 1.08 planes 0 3 2 6 None
4 engine 0.44 planes 0 3 2 6 None
5 height steer 0.12 planes 0 3 2 6 None
6 dihedral 0.40 planes 0 3 2 6 None
7 pods bag 8.72 pods v 1 1 4 None
8 Pod 1.74 pods v 3 2 4 None
9 optic 0.86 pods v 2 2 4 None
我需要從以下字典的鍵中為指定的包分配一個字符串:
bags = {'planes bag': 6,
'pods bag': 4,
'ground system bag': 13}
到目前為止,我有一個函數可以過濾出滿足我要填充的條件的行:
bags_lens = list(bags.values())
df['assigned bag'] = df[(df['Must'] != 0) & (df['bags column length'].isin(bags_lens))]
print(df)
該函數檢查是否檢查了 must 以及 bag culoumn 的長度是否匹配 bag dict 中的任何值。
如果一行符合這兩個條件,我需要將其分配給指定的 bag 列。
意思是,例如,行飛機包和完整的 Bandolera 應該將單詞“飛機包”分配給指定的包列。
澄清我想要的結果。 如果可能的話,我會是這樣的:
df['assigned bag'] =df['Bags'] if df[(df['Must'] != 0) & (df['bags column length'].isin(bags_lens))]
你實際上想要做的是.map()
bags column length
到這個字典:
bags_inv = {
6: 'planes bag',
4: 'pods bag',
13: 'ground system bag'
}
但是,僅在Must
不包含'0'
(字符串!)的條件下:
df['assigned_bag'] = df.loc[df['Must'] != '0']['bags column length'].map(bags_inv)
0 planes_bag
1 planes_bag
7 pods_bag
8 pods_bag
9 pods_bag
Name: bags_column_length, dtype: object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.