Pandas DataFrame上的条件逻辑

时间:2013-02-05 18:17:38

标签: python pandas

如何将条件逻辑应用于Pandas DataFrame。

参见下面显示的DataFrame,

   data desired_output
0     1          False
1     2          False
2     3           True
3     4           True

我的原始数据显示在“数据”列中,而next_output显示在旁边。如果'data'中的数字低于2.5,则desired_output为False。

我可以应用一个循环并重新构建DataFrame ......但那将是'un-pythonic'

4 个答案:

答案 0 :(得分:49)

In [1]: df
Out[1]:
   data
0     1
1     2
2     3
3     4

您想要应用一个有条件地根据所选数据框列返回值的函数。

In [2]: df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')
Out[2]:
0     true
1     true
2    false
3    false
Name: data

然后,您可以将返回的列分配给数据框中的新列:

In [3]: df['desired_output'] = df['data'].apply(lambda x: 'true' if x <= 2.5 else 'false')

In [4]: df
Out[4]:
   data desired_output
0     1           true
1     2           true
2     3          false
3     4          false

答案 1 :(得分:22)

只需将该列与该值进行比较:

In [9]: df = pandas.DataFrame([1,2,3,4], columns=["data"])

In [10]: df
Out[10]: 
   data
0     1
1     2
2     3
3     4

In [11]: df["desired"] = df["data"] > 2.5
In [11]: df
Out[12]: 
   data desired
0     1   False
1     2   False
2     3    True
3     4    True

答案 2 :(得分:12)

在此特定示例中,DataFrame只有一列,您可以优雅地将其写为:

df['desired_output'] = df.le(2.5)

le测试元素是否小于或等于2.5,类似lt小于,gtge

答案 3 :(得分:9)

In [34]: import pandas as pd

In [35]: import numpy as np

In [36]:  df = pd.DataFrame([1,2,3,4], columns=["data"])

In [37]: df
Out[37]: 
   data
0     1
1     2
2     3
3     4

In [38]: df["desired_output"] = np.where(df["data"] <2.5, "False", "True")

In [39]: df
Out[39]: 
   data desired_output
0     1          False
1     2          False
2     3           True
3     4           True