###DataFrameからの値抽出アルゴリズムで困っています.
下記のようなデータフレームに置いて
各ID毎のa-dの値を抽出したい
抽出する値は最も古いもの
###例
ID272083の場合は
a,cは2017-04-03の値(a:16662,c:2800.7)を採用するが
dは2017-04-04の値(133.0)
bは更に新しいものを検索していき値があればそれを採用し,なければnanを採用する
発生している問題
IDのunique数と同じデータ数を取得しなければならないが,下記のコードでは取得する数が少ない.
ID:500,c2:440
となってしまう.
nの場所が間違っているような気がしますが…
該当のソースコード
python
1#データの読み込み 2test = pd.read_csv() 3test["date"] = pd.to_datetime(test['date']) 4test = test.set_index(["ID","date"]) 5 6#今現在の状況 7test = test.reset_index(["ID","date"]) 8ID_uni = test["ID"].unique() 9test = test.fillna(0) 10 11a1 = [] 12b1 = [] 13c2 = [] 14d3 = [] 15for i in ID_uni: 16 #n = 1 17 for j in range(len(test["ID"])): 18 print(n) 19 if test["ID"][j] == i: 20 #a = test["a"][j] 21 #b = test["b"][j] 22 c = test["c"][j] 23 #d = test["d"][j] 24 if c != 0: 25 c2.append(c) 26 break 27 elif n == test['ID'].value_counts()[i]: 28 c2.append(0) 29 break 30 n += 1 31 32ソースコード
試したこと
階層をはずしたりし,試行錯誤していますが,うまくいきません.
回答1件
あなたの回答
tips
プレビュー