У меня есть следующий DataFrame:
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 <NA> 3 2 6 None
3 central wing 1.08 planes <NA> 3 2 6 None
4 engine 0.44 planes <NA> 3 2 6 None
5 height steer 0.12 planes <NA> 3 2 6 None
6 dihedral 0.40 planes <NA> 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
10 thermal 1.20 pods v 3 2 4 None
11 Encryption Cable 0.20 Ground <NA> 1 0 25 None
System,
planes,
pods,
low bag
Я пытаюсь присвоить значение столбца Bags сумке с назначенной длиной при следующем условии: если значение столбца Must не равно NULL и длина столбец сумки соответствует одному из пунктов в следующем списке:
[6,4,13]
Это моя попытка:
class AssignBagMusts:
df = ITEMS_DF
_bags: dict = BAGS
@classmethod
def create_bag_df(cls):
"""
Add len of string in Bags column to a column named beg_len.
"""
cls.df['bags column length'] = cls.df['Bags'].map(len)
cls.df['assigned bag'] = None
return cls.df
@classmethod
def assign_to_bag(cls):
bags_lens = list(cls._bags.values())
df = cls.df[pd.notnull(cls.df[cls.df['Must']]) &
cls.df[cls.df['bags column length']] == any(bags_lens)]
print(df)
if __name__ == '__main__':
AssignBagMusts.create_bag_df()
AssignBagMusts.assign_to_bag()
И я получил эту ошибку:
raise KeyError(f"None of [{key}] are in the [{axis_name}]")
KeyError: "None of [Index([ 'v', 'v', <NA>, <NA>, <NA>, <NA>, <NA>, 'v', 'v', 'v', 'v', 'v',\n 'v', 'v', 'v', 'v', 'v', 'v', <NA>, 'v', <NA>, 'v', 'v', 'v',\n 'v', 'v', 'v', <NA>, <NA>, 'v', <NA>, 'v', <NA>, <NA>, <NA>, <NA>,\n 'v', <NA>, <NA>, 'v', 'v', 'v', 'v', 'v'],\n dtype='object')] are in the [columns]"