回答編集履歴

1

手順が少ない方法を追記

2021/07/10 13:17

投稿

toshikawa
toshikawa

スコア388

test CHANGED
@@ -51,3 +51,31 @@
51
51
 
52
52
 
53
53
  forを使用しなくても、`cv_date`との計算や最低値を`1(True)`その他を`0(False)`はこのように可能だと思います。
54
+
55
+
56
+
57
+ ```python
58
+
59
+ # 読み込み等は上記と一緒
60
+
61
+
62
+
63
+ df = df.loc[cv,:].apply(lambda x:pd.to_datetime(x, errors='coerce')).copy() # cv_dateが有効な行を抽出すると共に、datetime型にデータを変更したデータフレームを作成
64
+
65
+
66
+
67
+ cols=df.columns.drop('cv_date') # cv_date以外の列名
68
+
69
+
70
+
71
+ # cv_dateとの差が一番小さい = その日付が一番大きい ということで、
72
+
73
+ # 日付の最大値と比較した結果とcv_dateを結合してデータフレームを戻している
74
+
75
+ pd.concat([df.loc[:,cols].apply(lambda x: x == np.max(x) ,axis=1),df['cv_date']],axis=1)
76
+
77
+ ```
78
+
79
+
80
+
81
+ のほうが手順が少ないですね。