スプレッドシートからインポートしたパンダのデータフレームに取り組んでおり、他の列/行からの複数の条件付き要件に基づいて新しい列を作成しようとしています。
'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とパンダの周りを学びながら、助け/洞察をいただければ幸いです。
ありがとうございました!そして、悪い説明をお詫びします。
複数の値を割り当てるために共有したコードが機能しない理由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]
コメントを追加