繁体   English   中英

Python:从条件for循环中打印出结果

[英]Python: Printing out result from conditional for loop

我有一个简单的问题。 我有一个小数据帧:

      Column1  Column2  Column3
Row1        0        4        6
Row2        1        3        5
Row3        0        4        2

我只需要在Column1等于1时才打印出Column1Column2

      Column1  Column2
Row2        1        3

我有这段代码,我被困在:

col=[col for col in df.columns if col=="Column1" or col=="Column2"]
print(loc[:,col])

这将打印出结果,以便我们将Column1Column2包含所有值。

      Column1  Column2
Row1        0        4
Row2        1        3
Row3        0        4

如何将条件列入Column1==1

谢谢!

最简单的两种方法是使用带有布尔索引的.loc和带有列过滤的query

方法1:

df.loc[df.Column1 == 1,['Column1','Column2']]

输出:

      Column1  Column2
Row2        1        3

方法2:

df.query('Column1 == 1')[['Column1','Column2']]

输出:

      Column1  Column2
Row2        1        3

您可以使用条件索引:

>>> df[df['Column1'] == 1]
      Column1  Column2  Column3
Row2        1        3        5

然后只需选择所需的列:

>>> df[df['Column1'] == 1][['Column1', 'Column2']]
      Column1  Column2
Row2        1        3

您可以使用python的namedtuple来执行此操作。 Namedtuple创建单独的单个类来表示值。 值得记住的是,类只有值而没有方法。

会是这样的:

from collections import namedtuple

Value = namedtuple('Value', ['column', 'line', 'value'])

examples = [Value(column, line, value) for column in range(3)
                                       for line in range(2)
                                       for value in range(2)]

>>> examples
[Value(column=0, line=0, value=0), Value(column=0, line=0, value=1), Value(column=0, line=1, value=0), Value(column=0, line=1, value=1), Value(column=1, line=0, value=0), Value(column=1, line=0, value=1), Value(column=1, line=1, value=0), Value(column=1, line=1, value=1), Value(column=2, line=0, value=0), Value(column=2, line=0, value=1), Value(column=2, line=1, value=0), Value(column=2, line=1, value=1)]

for _ in examples:
  if _.column == 1:
    print('Line: %s' % _.line, 'Value: %s' % _.value)

Line: 0 Value: 0
Line: 0 Value: 1
Line: 1 Value: 0
Line: 1 Value: 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM