列NANに他の値を作成せずにGroupByを使用する方法 -- python フィールド と pandas フィールド と pandas-groupby フィールド 関連 問題

How do I use groupby without making other values in the column NaN?












-1
vote

問題

日本語

「Employee No」と「Client Group Name」という欄に「START」という欄に、列「割り当て開始日」から最小値を取得しようとしています。

「Start」列に、「クライアントグループ名」ごと、すべての「従業員番号」ごとに最小の「割り当て開始日」に埋めてください。

これまでのところ、私は以下のコードを書きました:

<事前> <コード> for i, j in test_n.iterrows(): l = test_n.iloc[i]['Employee no'] test_n['start'] = test_n['Assignment Start Date'].where(test_n['Employee no'] == l).groupby(test_n['Client Group Name_y']).transform('min')

このコードはうまく機能し、希望の結果を生成します。しかし、以前のエントリをNaN値で上書きします。最後の「従業員番号」のためにのみ働いています。他の列をNaNにすることなく、すべての「従業員NO」のために働きたいです。 どのようにしてすべての行の最小値を取得するのをやめるにはどうすればいいですか?

画像の説明を入力します。ここで

英語

I am trying to get the lowest value from the column "Assignment Start Date", based on the "Employee no" and the "Client Group Name" into the column named "start".

I want the "start" column to be filled with the minimum "Assignment Start Date" for every "Client Group Name" and every "Employee no".

So far, I have written the below code:

for i, j in test_n.iterrows(): l = test_n.iloc[i]['Employee no'] test_n['start'] = test_n['Assignment Start Date'].where(test_n['Employee no'] == l).groupby(test_n['Client Group Name_y']).transform('min') 

This code works fine, and generates the desired result. But it over-writes the previous entries with NaN values. It is only working for the last 'Employee no'. I want it to work for all 'Employee no' without making other columns NaN. How do I stop it from doing that so that I get minimum values for all rows ?

enter image description here

</div
        

回答リスト

1
 
vote
vote
ベストアンサー
 

<コード> test_n

に関してこのコード行を試してください。 <事前> <コード> dfc = test_n.groupby(['Employee no','Client Group Name_y'])['Assignment Start Date'] test_n = test_n.assign(start=dfc.transform(min)) test_n
 

Try this line of code regarding test_n

dfc = test_n.groupby(['Employee no','Client Group Name_y'])['Assignment Start Date'] test_n = test_n.assign(start=dfc.transform(min)) test_n 
</div
 
 
1
 
vote

データフレーム内のすべての行を繰り返し、一度に1つずつ置き換えるように見えます。これはあまり効率的ではなく、エラーを導入することができます。代替方法はそれを使用することです groupbyメソッド。グループは特定の列にグループを作成し、他のメソッドを各グループに適用できます。

これを使用すると、最初にデータを理解したいグループを構築し、最小値を見つけたいデータを選択します。

<コード> test_n_groups = test_n.groupby(by=['Employee no','Client Group Name_y'])['Assignment Start Date']

それからあなたはまとめた方法を一緒に使って元のデータフレームに新しい列として最小値を追加します。

最初にグループ化されたデータに変換メソッドを適用して、各行

のMIN開始日を持つ列を取得します。

<コード> min_group = test_n_groups.transform(min)

その後、グループの開始と最小値の変換を使用して、グループを使用して元のデータフレームに割り当て方法を適用します。

<コード> test_n.assign(start=min_group)

最後の私はデータフレームを印刷して

のように見えるものを見るだろう

<コード> test_n.head(15)

 

It looks like you are trying to iterate over every row in the data frame and replace the values one at a time. This is not very efficient and can introduce errors. An alternative method would be to use the Groupby Method. The group by creates groups in the given columns then you can apply other methods to each group.

To use this you would first construct the groups you want to understand the data by and select the data you want to find the min.

test_n_groups = test_n.groupby(by=['Employee no','Client Group Name_y'])['Assignment Start Date']

You would then use a few methods together to add the minimum as a new column to your original data frame.

First you would apply the transform method to the grouped data to get an column that has the min start date for each row

min_group = test_n_groups.transform(min)

Then you would apply the assign method to the original data frame using your groups with the name start and the transform for the minimum from your group

test_n.assign(start=min_group)

Last I would print out the data frame to see what it looks like

test_n.head(15)

</div
 
 

関連する質問

0  Pythonの16行ごとの最も頻繁な価値を見つける  ( Find the most frequent value of every 16 rows in python ) 
私は800人の高さを表すデータフレームを持っています、そして私は16人の16人の最も頻繁な高さを見つけたいです。私は最も頻繁な値を見つけるために次のスクリプトを使うことができることを知っています: <事前> <コード> df['height'].value_c...

0  週にデータフレームの返品グループを持つ方法はありますか?  ( Is there a way to have a dataframe return groupings per week ) 
私は以下の表のように提示された情報を持つデータフレームを持っています、日付は私のindex: <事前> <コード> date | Company | Industry | Focus 2020-08-02 Ford Auto ...

0  Pandas GroupBy AGGは複数のパラメータを持つ関数を適用します  ( Pandas groupby agg apply a function with multiple parameters ) 
GroupByデータフレームの複数の列からパラメータを必要とし、2つのスケーラ値を返すPandas GroupByにどのような関数を適用することができます。 下記は繰り返し可能な例です。最後の行はf_value を取得します <事前> <コード> impor...

1  Pandas Groupbyをグループ行グループに使用するには、列値を合計して決定できますか?  ( Can you use pandas groupby to group rows determined by summing a column value ) 
データフレームの行を1列の値でグループ化したいと思います。以下に示す例は、iが150の値で 'NumberOfTrades'の値をグループ化していた場合であるので、上位2行がグループ化され、下位3行がグループ化されます。私が理解している次のステップは、各グルー...

1  PD.GroupBy他のグループビリーで、PD.Cutの結果を転置します  ( Pd groupby on another groupby transposing results of pd cut ) 
もう一つのかなり複雑な質問私はパンダとそのグループビリーとカット機能について頑張っています。状況は次のとおりです。このようなデータフレームがあるとしましょう。 <コード> import Pandas as pd pd.DataFrame(data) ...

-1  列の相互要素による行時間の違い計算と連結  ( Row time differences calculation and concatenation by mutual element in column ) 
私のDFは次のようになります。 <事前> <コード> A7 A8 欄の相互要素に基づいて新しいDFを作成し、同じ要素にアクションと削除の両方がある場合に操作を実行します。 iif t19 欄の要素には、アクションの追加と削除の両方があります。 N0...

1  Pandasのグループで行方不明の行を追加する  ( Adding rows for missing year by group in pandas ) 
こののように見えるデータフレームを持っています <事前> <コード> pd.DataFrame({'A': ['C1', 'C1', 'C1', 'C1', 'C2', 'C2', 'C3', 'C3'], ...: ...

-1  列NANに他の値を作成せずにGroupByを使用する方法  ( How do i use groupby without making other values in the column nan ) 
「Employee No」と「Client Group Name」という欄に「START」という欄に、列「割り当て開始日」から最小値を取得しようとしています。 「Start」列に、「クライアントグループ名」ごと、すべての「従業員番号」ごとに最小の「割り当て開始...

0  GroupByを使用して類似値をグループ化する方法  ( How to use groupby to group similar value ) 
次のスニペットがあります <コード> import pdfplumber, requests from io import BytesIO import pandas as pd def get_title_liked_txt(page: object):...

0  大規模データセットに対するマルチグループビーカウントアクティビティの最も効率的な方法  ( Most efficient way of multi groupby count activities on large datasets ) 
(任意の長さの)属性(列)値のサブセットを見つけようとしています。これは、特定のデータセット内で一意です。それらを見つけるために私の知識の最善のための最も効率的な方法は、Pandasの対応するグループサイズをカウントする複数の(多くの)GroupByアクティビ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有