他の行や列からの複数の条件に基づいてデータフレームに新しい列を作成しますか?nullの行を含めますか?-Python / Pandas

SlimJim

スプレッドシートからインポートしたパンダのデータフレームに取り組んでおり、他の列/行からの複数の条件付き要件に基づいて新しい列を作成しようとしています。

'SPOTTED'という新しい列を作成するためにこれまで使用したコードは次のとおりです。

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'WRK'), 'No', ' ')

これにより、下の画像に出力が生成され、「SPOTTED」列が作成され、「Time_Code」列の値が「WRK」で「Work_Date」列の行が空白ではない「No」で列の行のみが入力されます。 /ヌル:

シート上のコードの現在の出力:

シート上のコードの現在の出力

これを正確に実行したいのですが、「WRK」だけでなく、「Time_Code」列の下に複数のカテゴリを含めます。

このようなことを試みて、同じ方法で複数の「Time_Code」値をターゲットにし、「SPOTTED」列を更新すると、次のようになります。

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'WRK'), 'No', ' ')

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'OFF'), 'No', ' ')

df['SPOTTED'] = np.where((df['Work_Date'].notnull()) & (df['Time_Code'] == 'VAT'), 'No', ' ')

Pythonは、コード行の1つだけを実行してデータフレームに適用し、代わりに3つすべてを適用して「SPOTTED」列を作成および更新します。

終了してこれを停止できるようになったら、最終的にデータフレームをCSVファイルにエクスポートしようとしています。

仕事のためにPythonとパンダの周りを学びながら、助け/洞察をいただければ幸いです。

ありがとうございました!そして、悪い説明をお詫びします。

AMC

複数の値を割り当てるために共有したコードが機能しない理由df['SPOTTED'] =全体に割り当てるためです。したがって、コードは同じ列を作成および上書きし続けます。

次回、この種の問題が発生したときはdf、各操作後に内容を確認してみてください


これが最も慣用的な解決策だと思います。@HenryYikからダミーデータを盗みました。気にしないでください。

import numpy as np
import pandas as pd

df = pd.DataFrame({'work_date': [1, 2, 3, 4, np.nan], 'time_code': ['WRK', 'OFF', 'VAT', 'BONUS', 'OT15']})

select_time_codes = ['VAT', 'WRK', 'OFF']

df.loc[df['work_date'].notna() & df['time_code'].isin(select_time_codes), 'spotted'] = 'No'

これは、その後のDataFrameの外観です。

   work_date time_code spotted
0        1.0       WRK      No
1        2.0       OFF      No
2        3.0       VAT      No
3        4.0     BONUS     NaN
4        NaN      OT15     NaN

値には文字列が割り当てられ、可能な値とその使用法についての説明が出るまで'No'NaNは変更されません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ