为了账号安全,请及时绑定邮箱和手机立即绑定

删除 Pandas 数据框中的列表

删除 Pandas 数据框中的列表

茅侃侃 2021-10-10 14:26:06
我有以下数据框:Index   Recipe_ID   order   content0       1285        1       Heat oil in a large frypan with lid over mediu...1       1285        2       Meanwhile, add cauliflower to a pot of boiling...2       1285        3       Remove lid from chicken and let simmer uncover... 3       1289        1       To make the dressing, whisk oil, vinegar and m...4       1289        2       Cook potatoes in a large saucepan of boiling w..任务:我需要获取一个单元格中的内容:df = df.groupby('recipe_variation_part_id', as_index=False).agg(lambda x: x.tolist())这将返回以下内容:Index   Recipe_ID   order         content0       1285        [1, 2, 3]     [Heat oil in a large frypan with lid over medi...1       1289        [1, 2, 3]     [To make the dressing, whisk oil, vinegar and ...2       1297        [1, 2, 4, 3]  [Place egg in saucepan of cold water and bring...3       1301        [1, 2]        [Preheat a non-stick frying pan and pan fry th...4       1309        [2, 3, 4, 1]  [Meanwhile, cook noodles according to package ...如果您查看第一个配方条目,您会得到以下信息:['Heat oil in a large frypan with lid over medium-high heat. Cook onions, garlic and rosemary for a couple of minutes until soft. Add chicken and brown on both sides for a few minutes, then add in tomatoes and olives. Season with salt and pepper and allow to simmer with lid on for 20-25 minutes. ', 'Meanwhile, add cauliflower to a pot of boiling water and cook for 10 minutes or until soft. Drain and then mash and gently fold in olive oil, parmesan, salt and pepper. ', 'Remove lid from chicken and let simmer uncovered for five minutes more. Sprinkle with parsley then serve with cauliflower mash. ']这是我想要的,但我需要删除方括号数据类型 = 列表我试过了:df.applymap(lambda x: x[0] if isinstance(x, list) else x)只返回第一个条目,而不是每一步我试过了:df['content'].str.replace(']', '')只返回 NAN我试过了:df['content'].str.replace(r'(\[\[(?:[^\]|]*\|)?([^\]|]*)\]\])', '')只返回 NAN我试过了:df['content'].str.get(0)只返回第一个条目任何帮助将不胜感激。如果您需要任何进一步的信息,请告诉我。
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我创建了一个小例子,可以为你解决这个问题:


import pandas as pd

df = pd.DataFrame({'order': [1, 1, 2], 'content': ['hello', 'world', 'sof']})

df

Out[4]: 

   order content

0      1   hello

1      1   world

2      2     sof

df.groupby(by=['order']).agg(lambda x: ' '.join(x))

Out[5]: 

           content

order             

1      hello world

2              sof

因此,就像您在问题的第 5 行中所做的那样,您使用' '.join(x)而不是tolist()which 将所有内容都作为 1 个大字符串而不是字符串列表,因此,没有[]


查看完整回答
反对 回复 2021-10-10
  • 1 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信