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

将数据帧转换为包含 Pandas 中数组的单元格的系列

将数据帧转换为包含 Pandas 中数组的单元格的系列

慕娘9325324 2021-08-14 16:34:39
对不起,如果之前已经回答过这个问题,但我在解决方案上遇到了麻烦。我有一个带有列名的 2D DataFrame,其中元素包含非空值和空值。我想将 2D 数据帧“展平”为 1D 系列,其中我仅将非空数据保留为带有相应标题的系列单元格中的列表。即:以下内容:来自(类型pandas.Dataframe):| asset | name | id |---------------------| a     | john | 001|| a     | NaN  | 002|| NaN   | dave | 003|到(输入 pandas.Series):| asset | name         | id              |------------------------------------------| [a]   | [john, dave] | [001, 002, 003] |谢谢!编辑:为什么我需要这个:我从一个大型 DataFrame 开始,它具有多个带有时间戳“行”的重复属性。在任何给定的时间戳,行中的信息可以添加或删除。我曾经df.where()返回一个唯一值的数据框,并试图将其展平为每行一个“id”的属性集合。实际上,示例表来自单个 GroupBy 对象。
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

使用字典理解来实例化一个新系列(这应该比apply基于解决方案更快)。


pd.Series({c : df[c].dropna().unique().tolist() for c in df.columns})


asset             [a]

name     [john, dave]

id          [1, 2, 3]

dtype: object

如果您想要一个单排的 DataFrame,请使用


pd.Series(

    {c : df[c].dropna().unique().tolist() for c in df.columns}

).to_frame().T


  asset          name         id

0   [a]  [john, dave]  [1, 2, 3]


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

添加回答

举报

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