以下の構造のデータフレームがあり(df1)、全ての列はNoneもしくは日付を所持しています。
やりたいことは少し複雑でして、各行ごとにcv_dateの日付に一番近い日付がどれか特定したいです。
また、その日付の位置の値を元々の日付ではなく1に変換したいです。
大変恐縮ですが、今まで取り組んだ方法を載せさせて頂きます。
以下のコードは途中ではありますが、df1の各値にfor文でアクセスし、各行ごとのリストを再作成。その後関数←こちらの関数を作成したリスト(push_f_start_date push_g_start_date push_h_start_dateの値の入ったリスト)に当て、cv_dateに一番近い値を特定しようとしました。
ですが、そもそもこのやり方がスマートには到底思えないため、もともとのデータフレームの状態で上記の要件を満たせる方法などがありましたらご教授頂きたいです。よろしくお願いします。
test.py list1 = [] for x in range(len(df1.index)): for j in df1.columns: if j != 'cv_date': list1.append(df1[j][x]) if len(list1) > len(df1.columns): pass print(list1)
df1 push_f_start_date push_g_start_date push_h_start_date cv_date 0 None None None None 1 None None None None 2 None None None None 3 None None None 2021-06-13 4 None None None None ... ... ... ... ... 6933 None None None None 6934 None None None 2021-05-01 6935 None None None None 6936 None None None None 6937 None None None None
あなたの回答
tips
プレビュー