循环遍历Pandas日期帧中的行以检查两个单独列中的值

时间:2017-06-27 16:00:29

标签: python python-2.7 python-3.x pandas dataframe

假设我有一个包含6列和4行的数据框,另外一个列表我们将称之为boollist。我想要做的是遍历所有行,然后如果行中的2个单元格包含空字符串,那么我会将“False”附加到boollist。反之亦然,如果行包含少于2个空白字符串单元格,则它将附加“True”。在过程结束时,boollist应该具有与行数相同的长度,以便可以将其添加为新列。

         column0    column1    column2    column3    column4    column5
row0     'data'     'data'      'data'    'data'      'data'     'data'
row1     'data'       ''        'data'    'data'      'data'     'data'
row2       ''         ''         ''          ''       'data'       ''
row3     'data'      'data'     'data'     'data'     'data'     'data'

在这个例子中,boollist最终包含[True,True,False,True]。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

关于熊猫的好处是你不需要循环任何东西。

如果您不想编辑数据以将字符串计为null,则可以使用applymap来浏览数据。

applymap通过数据框元素应用函数。在applymap中,你可以使用lambda function,如果单元格有一个空字符串,它将返回True。然后,您将该行中的空字符串相加。

df.applymap(lambda x: x =='').sum() <2

以少于两个空字符串的行为条件返回一个布尔数组。

答案 1 :(得分:2)

空白在False上下文中解析为bool

(~df.astype(bool)).sum(1) < 2

更明确

df.eq('').sum(1) < 2