python – 通过删除groupby之后的nan来合并DataFrame中的行
发布时间:2020-12-20 11:55:39 所属栏目:Python 来源:网络整理
导读:提供如下的DataFrame: import numpy as npimport pandas as pdfrom pandas import DataFrameidx = pd.MultiIndex.from_product([["Project 1","Project 2"],range(1,3)],names=['Project','Ord'])df = DataFrame({'a': ["foo",np.nan,"bar"],'b': [np.nan,"
提供如下的DataFrame:
import numpy as np import pandas as pd from pandas import DataFrame idx = pd.MultiIndex.from_product([["Project 1","Project 2"],range(1,3)],names=['Project','Ord']) df = DataFrame({'a': ["foo",np.nan,"bar"],'b': [np.nan,"one","two",np.nan]},index=idx) Out: a b Project Ord Project 1 1 foo NaN 2 NaN one Project 2 1 NaN two 2 bar NaN 我想合并具有相同外部索引的行(请注意,在每种情况下只有一个非nan值). 我目前的解决方案涉及两个groupby-operations: df.index = df.index.droplevel(1) df.groupby(df.index).ffill().groupby(df.index).last() 并给我预期的结果: Out: a b Project Project 1 foo one Project 2 bar two 必须使用两个groupby-operations似乎过多,因为我需要的是一个聚合函数,它从列表中返回单个非nan值.但是,我想不出使用dropna作为聚合函数的方法. 解决方法
groupby上的最后一个方法获取最后一个有效值.在这种情况下,首先会做同样的事情.
df.groupby(level='Project').last() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |