获取唯一值并转换为字符串

如何获取以下数据帧的唯一非空值并将其转换为字符串?例如:

import pandas as pd
df=pd.DataFrame([{'id': 1, 'language': 'en'}, {'id': 1}, {'id': 1, 'language': 'fr'}, {'id': 1, 'language': 'en'}])

我想得到:

       subs
       1      'en,fr'

目前我有类似的东西:

summary_df = df.groupby(['field1', 'field2']).agg(
    subs                =('language', 'unique'),
).reset_index()

但这似乎存在三个问题:

  • 它包括空值

  • 我无法将其保存到 sql,因为它返回一个数组(我想我需要一个字符串)

  • 我也想整理一下

这是我目前正在做的事情。这种方法好不好?坏的?有什么需要改进的地方吗?

subs =('burned_in_sub_language', lambda x: str(sorted(x.dropna().unique())))


尚方宝剑之说
浏览 60回答 2
2回答

人到中年有点甜

清洁并分类。分组并选择。收集独特的标签并将其转换为字符串。如果需要,重命名该列。df.dropna().sort_values('language')\        .groupby('id')['language']\        .unique().str.join(',')\        .reset_index().rename(columns={'language': 'subs'})#   id   subs#0   1  en,fr

喵喔喔

df.dropna().groupby('id')['language'].unique().reset_index().rename(columns={'language':'subs'})期望的结果    id  subs     0   1   [en, fr]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python