彼らは条件を満たした場合にデータフレーム内の別の一つに2つの列を追加したり、結合する方法

モハメドAbulqassim:

私はこれに新たなんだ、これは奇妙に聞こえるかもしれませんが、基本的に、私は大規模なデータフレームを持っていますが、簡略化のための目的はのは、データフレームはこれですと仮定してみましょう:

import pandas as pd
import numpy as np

dfn = pd.DataFrame({'a':[1,2,3,4,5],
                   'b':[6,7,8,9,10],
                   'c':np.nan})
dfn

出力:

    a   b   c
0   1   6   NaN
1   2   7   NaN
2   3   8   NaN
3   4   9   NaN
4   5   10  NaN

私は何をしたい "すなわち「」が奇数である場合には、対応する行の値に追加する「B」と入力で対応する行の値の場合に、条件をオフに基づいて、「C」の欄に値を入力することですC、C 『『の値が』」、それ以外の、ちょうど使用』。

私が現在持っていることはこれです:

for row in range(dfn.shape[0]):
    if dfn.loc[row]['a']%2!=0:
        dfn.loc[row]['c']=dfn.loc[row]['a']+dfn.loc[row]['b']
    else:
        dfn.loc[row]['c']=dfn.loc[row]['a']

dfn

出力:

    a   b   c
0   1   6   NaN
1   2   7   NaN
2   3   8   NaN
3   4   9   NaN
4   5   10  NaN

何もここで起こっているようだと私は全くわから理由はないんだけど。

私はまた、別のアプローチを試してみました:

is_odd=dfn[dfn['a']%2!=0]
is_odd['c'] = is_odd['a'] + is+odd['b']

is_odd

ここで、変なふうに私は右の出力が得られます。

    a   b   c
0   1   1   2
2   3   3   6
4   5   5   10

私は再びDFN呼び出すときしかし、それはすべてのNaN値で出てきます。

私はまた、変数名と何が起こるを使用せずにそれをやってみました。

すべてのアイデアは、私は存在しないか、またはこれを行う方法があるかどうてる何?

ありがとう!

sammywemmy:

使用numpyの条件文のために働きます、。これは、しかしかなり速く、Pythonでif文に似ています。私はnumpyの場合など、効率的なとしてそれを見つけるいけないので、私はほとんど、iterrowsを使用していません。

 dfn['c'] = np.where(dfn['a']%2 !=0, 
                     dfn.a + dfn.b,
                     dfn.a)


    a   b   c
0   1   6   7
1   2   7   2
2   3   8   11
3   4   9   4
4   5   10  15

基本的に、np.whereの最初の行は、 '列が奇数であるかどうかを見つけることである。この場合のURの条件を規定しています。もしそうであれば、次の行が実行されます。それが偶数である場合は、最後の行が実行されます。あなたは、if-else文と考えることができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=279797&siteId=1