1
データフレームがあり、2列の値に基づいて新しい列を追加したい場合は、グループmaxを使用します。例えば、ここでの例では、今DataFrame
グループの最大値に基づいてDataFrame列に新しい値を割り当てます。
import pandas as pd
import numpy as np
df = pd.DataFrame({"col1": ['a'] * 2 + ['b'] * 4,
"col2": [1, 2, 1, 2, 3, 4],
"col3": ['yep', 'no', 'no', 'no', 'yep', 'yep']})
df
col1 col2 col3
0 a 1 yep
1 a 2 no
2 b 1 no
3 b 2 no
4 b 3 yep
5 b 4 yep
だ、何を私がしたいことはcol2
がグループ最大で「はい」と言った新しい列は、col1
とcol3
にグループ分けして、「うん」と同じです。
col1 col2 col3 col4
0 a 1 yep no
1 a 2 no no
2 b 1 no no
3 b 2 no no
4 b 3 yep no
5 b 4 yep yes
私は以下のコードを試してみたが、私は、戻り値に若干の誤差を取得しています:
# define function
def max_bal(df):
max_row = df['col2'].max()
label = np.where((df['col3'] == 'yep') &
(df['col2'] == max_row),
'Yes',
'No')
return label
今文で
df.groupby('col1').apply(max_bal)
col1
a [No, No]
b [No, No, No, Yes]
dtype: object
を、グループ内の関数を呼び出しますこれらは正しい値ですが、私が期待する通りSeries
で返されません。 Series
/array
/list
上記のdf
の新しい列にこれらの値を割り当てようとしているので、私は1つを必要とします( `col4 'を参照)。どんな指針も大変ありがとうございます。
これは機能しますが、なぜですか?私はPython/pandasを学んでいます。私は最初の試みとDataFrameソリューションとのギャップを、オリジナルのDataFrameインデックスを指定して橋渡ししようとしています。 –