对不起,如果之前已经回答过这个问题,但我在解决方案上遇到了麻烦。我有一个带有列名的 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]
添加回答
举报
0/150
提交
取消