PandasのDataFrameで欠損値かどうかを確認して欠損値である場合、
listを格納していくプログラムを組んでました。
すでにlistが入っている場合、入っているlistに追加していきます。
その際に、欠損値の確認ではエラーが起きたので少しだけ手間取りましたので
メモします。
まずはPandasをimportします。
import pandas as pd
空のDataFrameを作成します。
df_test = pd.DataFrame(columns=['name', 'list']) df_test['name'] = ['aaa'] df_test -------------------------------------------------- 名前 都県 0 aaa NaN
欠損値ではないときに使うlistを作成します。
kanto = ['茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県'] shutoken = ['東京都', '茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '神奈川県', '山梨県']
isna()で欠損値であることを確認し、listを格納します。
if pd.isna(df_test['都県'][0]) == True: print('欠損値であることを確認') df_test['都県'][0] = kanto df_test -------------------------------------------------- 欠損値であることを確認 名前 都県 0 aaa [茨城県, 栃木県, 群馬県, 埼玉県, 千葉県, 東京都, 神奈川県]
次に欠損値ではないことを確認し、list_2と結合します。
if pd.isna(df_test['list'][0]) == False: print('入力済みであることを確認') df_test['list'][0] = set(df_test['list'][0] + shutoken) df_test -------------------------------------------------- ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
ValueErrorとなり、複数の要素を持つ配列の真理値は曖昧とエラーが返ってきました。
比較演算子を使わずに出力してみると、
pd.isna(df_test['都県'][0]) -------------------------------------------------- array([False, False, False, False, False, False, False])
arrayでFalseが返ってきてました。
格納したのはlistなので、listであるかどうかを判定基準にして出力させてみました。
if type(df_test['都県'][0]) == list: df_test['都県'][0] = list(set(df_test['都県'][0] + shutoken)) df_test -------------------------------------------------- 名前 都県 0 aaa [栃木県, 群馬県, 神奈川県, 茨城県, 千葉県, 山梨県, 埼玉県, 東京都]
listに山梨県が追加され、listが結合されたことが確認できました。
プログラミングに不慣れなので結構簡単に躓きます。