if-then-elseブロックで複数の条件を評価して、Pandas DataFrameに新しい列を作成したいとします。私はこれを実行するとPandas DataFrameでif-then-elseブロックの複数の条件を評価する
if events.hour <= 6:
events['time_slice'] = 'night'
elif events.hour <= 12:
events['time_slice'] = 'morning'
elif events.hour <= 18:
events['time_slice'] = 'afternoon'
elif events.hour <= 23:
events['time_slice'] = 'evening'
、私は下のエラーを取得:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
だから私は、以下に示すような任意のステートメントを追加することによってこの問題を解決しようとした:
if (events.hour <= 6).any():
events['time_slice'] = 'night'
elif (events.hour <= 12).any():
events['time_slice'] = 'morning'
elif (events.hour <= 18).any():
events['time_slice'] = 'afternoon'
elif (events.hour <= 23).any():
events['time_slice'] = 'evening'
今、私はエラーは発生しませんが、time_sliceの一意の値を確認すると、「夜」のみが表示されます。
np.unique(events.time_slice)
array(['night'], dtype=object)
データに「朝」、「午後」または「夕方」になるサンプルが含まれているため、どうすれば解決できますか。ありがとう!
あなたのデータを分類するために pd.cut()方法を使用することができます
たぶん、最初のビンが 'だろう-1'エントリが '0'であれば、それはそれを作る可能性があるため、 NaN? – Divakar
@Divakar、良いキャッチ、ありがとう!私は自分の答えを修正しました – MaxU