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

对不起,如果之前已经回答过这个问题,但我在解决方案上遇到了麻烦。


我有一个带有列名的 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 对象。


慕娘9325324
浏览 175回答 1
1回答

阿晨1998

使用字典理解来实例化一个新系列(这应该比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         id0   [a]  [john, dave]  [1, 2, 3]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python