从列中的值过滤来自多标头DataFrame的行

时间:2018-05-30 14:39:28

标签: python pandas dataframe filter

我正在构建一个Python脚本来执行以下操作:

  1. 列出目录

  2. 中的CSV
  3. 将单个CSV文件读取到DataFrame - > “数据”(第2行(参数名称)和第3行(参数单位)定义为标题)。

  4. 如果列“TMOD1”,“TMOD2”,“TMOD3”和“TMOD4”中的值为0(如果一个不为0,整行必须去),则只保留行

  5. 使用单位“bit”删除所有列( - >参数)

  6. 删除超过所有行的行10“NaN”值

  7. 将过滤后的DataFrame“data”附加到DataFrame“result”

  8. 对所有CSV文件迭代步骤2-7

  9. 将生成的DataFrame“result”保存为新的CSV文件

  10. 我坚持如何实施第3步和第4步,其他一切正常。

    我在第3步尝试了以下内容:

    data = data[(data.TMOD1 == 0) & (data.TMOD2 == 0) & (data.TMOD3 == 0) & (data.TMOD4 == 0)]
    

    以下是第4步:

    data.drop(labels='bit', axis=1, level=1, inplace=True)
    

    当退出第3步并使用多标题行DataFrame时,第4步可以正常工作。

    但是,步骤3仅在切换到单个标题行DataFrame时有效 - 在这种情况下,步骤4显然不起作用。

    我想我搞砸了正确的标题级别。

1 个答案:

答案 0 :(得分:0)

data = data[(data['TMOD1']['bit'] == 0) & (data['TMOD2']['bit'] == 0) & (data['TMOD3']['bit'] == 0) & (data['TMOD4']['bit'] == 0)]

似乎工作。我昨天尝试的时候不知道为什么没有。

是否有可能将第二个标签(“位”)留空?原始数据中的标签有时会有所不同(例如“位”,“位”或“无单位”)。