gpt4 book ai didi

python - 从 Pandas Dataframe 中的列表中提取元组

转载 作者:行者123 更新时间:2023-12-01 07:12:08 25 4
gpt4 key购买 nike

我有一个 12 列的数据框。我想根据另一列的值提取一列的行。

我的数据框示例

order_id    order_type   order_items
45 Lunch [('Burger', 5), ('Fries', 6)]
12 Dinner [('Shrimp', 10), ('Fish&Chips', 7)]
44 Lunch [('Salad', 9), ('Steak', 9)]
23 Breakfast [('Coffee', 2), ('Eggs', 3)]

我想通过提取每个元组的第一项来提取早餐、午餐和晚餐菜单。并从元组中的下一项中提取订单数。

根据这行代码,每一项都是字符串类型

print(type(df['order_items'][0]))
>> <class 'str'>

我尝试应用过滤器来提取早餐菜单:

BreakfastLst=df.loc[df['order_type'] == 'Breakfast']['order_items']

但输出看起来像这样,我无法使用 for 循环 来迭代子列表并访问元组。

2                           [('Coffee', 4), ('Eggs', 7)]
7 [('Coffee', 2), ('Eggs', 3)]
8 [('Cereal', 7), ('Pancake', 8), ('Coffee', 4),...
9 [('Cereal', 3), ('Eggs', 1), ('Coffee', 1), ('...

我还尝试转换为列表:

orderTypeLst = df(['order_type'])['order_items'].apply(list)

然后通过执行以下操作提取列表:

breakFast=orderTypeLst['Breakfast']
lunch=orderTypeLst['Lunch']
dinner=orderTypeLst['Dinner']

但输出是一个字符串。我也无法重复这一点。

["[('Coffee', 4), ('Eggs', 7)]",
"[('Coffee', 2), ('Eggs', 3)]",
"[('Cereal', 7), ('Pancake', 8), ('Coffee', 4), ('Eggs', 8)]"]

至于字典我尝试了以下方法,但输出是重复的:

pd.Series(outlierFile.order_type.values,index=outlierFile.order_items).to_dict()

输出样本

 "[('Fries', 1), ('Steak', 6), ('Salad', 8), ('Chicken', 10)]": 'Lunch',
"[('Cereal', 6), ('Pancake', 8), ('Eggs', 3)]": 'Breakfast',
"[('Shrimp', 9), ('Salmon', 9)]": 'Dinner',
"[('Pancake', 3), ('Coffee', 5)]": 'Breakfast',
"[('Eggs', 1), ('Pancake', 1), ('Coffee', 5), ('Cereal', 5)]": 'Breakfast'

我想要的输出是每个 order_type(列表或字典)的干净版本,因此我可以迭代元组并提取所需的项目。

任何输入都会有帮助谢谢,

最佳答案

IIUC,评估后尝试使用pandas.DataFrame.groupby:

my_dict = df.groupby('order_type')['order_items'].apply(lambda x: sum(x, [])).to_dict()
print(my_dict)

输出:

{'Breakfast': [('Coffee', 2), ('Eggs', 3)],
'Dinner': [('Shrimp', 10), ('Fish&Chips', 7)],
'Lunch': [('Burger', 5), ('Fries', 6), ('Salad', 9), ('Steak', 9)]}

关于python - 从 Pandas Dataframe 中的列表中提取元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58151118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com