【问题标题】:Only getting relevant data from Pandas Dataframe仅从 Pandas Dataframe 获取相关数据
【发布时间】:2016-03-19 21:25:41
【问题描述】:

背景简介:我最近刚开始使用 Pandas 读取 csv 数据文件。我可以通过读取 csv 创建数据框,但现在我想仅使用数据集的特定列进行一些计算。

有没有办法创建一个新的数据框,我只使用相关列不是 NA 或 0 的行?例如想象一个看起来像这样的数组:

   blah  blah1  blah2  blah3
0    1     1      1      1
1   NA    NA      1     NA
2    1     1      1      1

假设我想处理“blah1”和“blah2”列下的数据,但我只想使用第 0 行和第 2 行,因为 1 在“blah”列下有一个 NA。

有没有一种简单的方法可以做到这一点?谢谢!

编辑(澄清): - 我不提前知道我想删除第 1 行,因此我需要能够检查 NA 值(可能还有任何其他占位符值,而不仅仅是它是否为空)。

【问题讨论】:

    标签: python csv pandas dataframe


    【解决方案1】:

    是的,你可以使用dropna

    df = df.dropna(axis = 1)
    

    并选择列使用这个:

    df = df[["blah1", "blah2"]]
    

    现在df 仅包含列"blah1""blah2" 和行02

    编辑 1

    要将 NaN 验证限制为某些列,您可以使用 isnull()

    mask = df[["blah1", "blah2"]].isnull().all(axis=1)
    df = df[~mask]
    

    编辑 2

    mask = df.B == 'placeholder'
    df = df[~mask]
    

    【讨论】:

    • 这是否只是假设我已经知道要删除哪一行?有没有办法让它检查它是否应该删除该行,因为它在特定列下有一个 NA?
    • 如果我不想要列 blah1 下的值,我还想通过省略一行来自定义该怎么办。就像如果第 1 行读起来像 0 1 1 我仍然想省略第 1 行,因为它在列下的值是 0。基本上简单来说:如果它有一个占位符值使我从我想要做的计算中无效,我会删除一行.因此,我需要一种方法来检查特定值,而不仅仅是它是否为空
    • @Akimata 也许像df = df[df['blah1']!='yourplaceholder']
    • @Akimata 看我的编辑 2
    猜你喜欢
    • 2022-01-03
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2021-08-17
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多