【问题标题】:Selecting the first values from a MultiIndexed dataframe with two levels从具有两个级别的 MultiIndex 数据框中选择第一个值
【发布时间】:2020-03-19 14:48:03
【问题描述】:

我对 python 比较陌生,所以请原谅由于我的术语不好而可能引起的任何混淆。

无论如何,我目前一直在尝试为多索引数据帧的第 2 级的每个索引获取第一个值。 df 有 2 个索引,级别 1 是“用户”,级别 2 是“试用”。 'user' 和 'trial' 都是整数值,而 't' 是连续浮点值。

基本上,我想为每个用户的每次试验提取以下数据帧的第一个“t”值:df=dataframe in question

我使用过df['user'].unique()df['trial'].unique()(在使用df.set_index(['user','trial']) 之前),发现有1040 个独立用户和97 个独立试用。主要问题是不是每个用户都有相同的唯一试用号(即用户 1 的试用号为 5,而用户 2 没有,依此类推)。

是否有办法获取这些值,然后在类似的数据帧 df2 中编译它们,该数据帧也由 'user' 和 'trial' 索引?

提前致谢!

【问题讨论】:

    标签: python pandas dataframe multi-index


    【解决方案1】:

    使用pd.drop_duplicates

    df = df.reset_index()
    df = df.drop_duplicates(subset=['user', 'trial'], keep='first')
    df = df.set_index(['user', 'trial'])
    

    (将<column>替换为包含要排序的值的列的名称)

    【讨论】:

    • 谢谢,效果很好!我不敢相信我没想过使用pd.drop_duplicates。不过,有一件小事,df = df.drop_duplicates(subset=['user', 'trial', 't'], keep='first') 不应该包含“t”,因为“t”没有任何重复项。不管怎样,再次感谢您!
    • 你是对的,我的错;)。现在编辑我的答案。
    猜你喜欢
    • 2019-05-06
    • 2022-01-25
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2020-06-05
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多