40

Pandas DataFrame に条件付きロジックを適用する方法。

以下に示す DataFrame を参照してください。

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

私の元のデータは「データ」列に表示され、その横にdesired_outputが表示されます。「データ」の数値が 2.5 未満の場合、desired_output は False です。

ループを適用して DataFrame を再構築することはできますが、それは「非 Pythonic」になります。

4

4 に答える 4

68
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
于 2013-02-05T18:35:28.293 に答える
29

列をその値と比較するだけです:

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
于 2013-02-05T21:34:52.340 に答える
13

この特定の例では、DataFrame が 1 つの列のみであり、次のようにエレガントに記述できます。

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

le要素が 2.5 以下かどうかをテストltgtますge

于 2013-02-05T21:58:25.553 に答える