首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫-从Dataframe列中提取值

熊猫-从Dataframe列中提取值
EN

Stack Overflow用户
提问于 2020-04-27 15:10:23
回答 1查看 105关注 0票数 0

我有以下格式的Dataframe:

代码语言:javascript
复制
cust_id, cust_details
101, [{'self': 'https://website.com/rest/api/2/customFieldOption/1', 'value': 'Type-A', 'id': '1'}, 
      {'self': 'https://website.com/rest/api/2/customFieldOption/2', 'value': 'Type-B', 'id': '2'}, 
      {'self': 'https://website.com/rest/api/2/customFieldOption/3', 'value': 'Type-C', 'id': '3'}, 
      {'self': 'https://website.com/rest/api/2/customFieldOption/4', 'value': 'Type-D', 'id': '4'}]
102, [{'self': 'https://website.com/rest/api/2/customFieldOption/5', 'value': 'Type-X', 'id': '5'}, 
      {'self': 'https://website.com/rest/api/2/customFieldOption/6', 'value': 'Type-Y', 'id': '6'}]

我试图为每个cust_id提取所有的cust_detail值。

预期产出:

代码语言:javascript
复制
cust_id, new_value
101,Type-A, Type-B, Type-C, Type-D
102,Type-X, Type-Y
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-27 15:25:23

简单答案:

代码语言:javascript
复制
df['new_value'] = df.cust_details.apply(lambda ds: [d['value'] for d in ds])

更复杂,可能更好的答案:

与其首先存储字典列表,我建议将每个字典放在原始dataframe中的一行。

代码语言:javascript
复制
df = pd.concat([
        df['cust_id'], 
        pd.DataFrame(
            df['cust_details'].explode().values.tolist(), 
            index=df['cust_details'].explode().index
        )
     ], axis=1)

如果需要按id对值进行分组,则可以通过标准的groupby方法进行分组:

代码语言:javascript
复制
df.groupby('cust_id')['value'].apply(list)

这看起来可能更复杂,但从长远来看,取决于您的用例可能会节省您的精力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61462031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档