【问题标题】:Dropping a data-frame column based on last row values根据最后一行值删除数据框列
【发布时间】:2018-07-10 16:07:59
【问题描述】:

我有一个如下所示的数据框。如何有选择地删除每行(18 年 7 月 10 日)中最终值为

即返回一个删除了 A 列和 D 列的数据框?

从这里:

给予:

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    鉴于您的 DataFrame 称为 df,您可以通过以下方式执行此操作:

    columns_to_keep = df.iloc[-1, :]>=0.3
    new_df = df.loc[:, columns_to_keep]
    

    在这种情况下,df.iloc[-1, :] 将最后一行作为pd.Series>=0.3 将创建一个布尔系列,然后我们可以将其与 .loc 一起使用,以仅保留最后一行值大于或等于 0.3 的列。

    我在下面准备了minimal, complete and verifiable example

    In [7]: import pandas as pd
    In [8]: df = pd.DataFrame({'A':[0.1, 0.1, 0.2], 'B':[0.2, 0.3, 0.3], 'C':[0.2, 0.4, 0.4], 'D':[0.2, 0.2, 0.2], 'E':[0.1, 0.2, 0.4], 'F':[0.3
       ...: , 0.3, 0.4]}, index=['08-Jul-18', '09-Jul-18', '10-Jul-18'])
    
    In [9]: df
    Out[9]: 
                 A    B    C    D    E    F
    08-Jul-18  0.1  0.2  0.2  0.2  0.1  0.3
    09-Jul-18  0.1  0.3  0.4  0.2  0.2  0.3
    10-Jul-18  0.2  0.3  0.4  0.2  0.4  0.4
    
    In [10]: df.loc[:, df.iloc[-1, :] >=.3]
    Out[10]: 
                 B    C    E    F
    08-Jul-18  0.2  0.2  0.1  0.3
    09-Jul-18  0.3  0.4  0.2  0.3
    10-Jul-18  0.3  0.4  0.4  0.4
    

    【讨论】:

    • 如果这回答了您的问题,也请接受。
    • 谢谢。这为我提供了一个索引...如何创建仅包含 BCE&F 列的数据框?
    • 不,这应该给你正是那个DataFrame,请看看我对答案所做的编辑。
    • 我得到 Empty DataFrame Columns: [] Index: [2017-07-14 00:00:00, 2017-07-17 00:00:00....]
    • 那么你构建 DataFrame 的方式就关闭了。请参阅我刚刚添加的最小示例。
    猜你喜欢
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2011-04-06
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多