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が結合されたことが確認できました。
プログラミングに不慣れなので結構簡単に躓きます。

