對不起,如果之前已經回答過這個問題,但我在解決方案上遇到了麻煩。我有一個帶有列名的 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
提交
取消