假设我有以下数据帧:
df = pd.DataFrame({"unique_id": [1, 1, 1], "att1_amr": [11, 11, 11], "att2_nominal": [1, np.nan, np.nan], "att3_nominal": [np.nan, 1, np.nan], "att4_bok": [33.33, 33.33, 33.33], "att5_nominal": [np.nan, np.nan, np.nan], "att6_zpq": [22.22, 22.22, 22.22]})
我要做的是按数据帧的行按unique_id
分组,这样我就可以对包含单词nominal
的列应用单独的groupby操作,并对所有其他列应用单独的groupby操作。更具体地说,我想用sum(min_count = 1)
和first()
或last()
对包含nominal
的列进行分组。结果如下:
df_result = pd.DataFrame({"unique_id": [1], "att1_amr": [11], "att2_nominal": [1], "att3_nominal": [1], "att4_bok": [33.33], "att5_nominal": [np.nan], "att6_zpq": [22.22]})
谢谢你!你知道吗
@jezrael提供的解决方案工作得很好,但却是最优雅的解决方案,然而,我遇到了严重的性能问题。令人惊讶的是,我发现这是一个更快的解决方案,同时实现相同的目标。你知道吗
您可以动态创建字典—首先使用lambda函数创建具有} :
nominal
的所有列,然后使用last
创建其他所有列并将其合并在一起,最后一次调用^{另一种更清洁的解决方案:
为什么不只是:
相关问题 更多 >
编程相关推荐