各列の行の大部分が null ( None) である巨大なテーブルをクエリしました (それぞれidに複数の行がありますid)。これらを押しつぶしたいので、1行につき1行にしますid
入力のモック例を提供します。
id var1 var2
0 1 None None
1 1 None x
2 2 None k
3 3 None None
4 1 None None
5 1 y NOT
6 3 p None
7 2 ss None
8 2 None None
出力のモック例は次のとおりです。
id var1 var2
0 1 y x
1 2 ss k
2 3 p None
"NOT"の 2 番目の非 null 値であるため、 from var2column がどのように作成されなかったかに注意してくださいid==1。
次のスニペットは、各 ID に値が 1 つしかない場合に機能します。
df = df.set_index('id')
cs = [df[col].dropna() for col in df]
pd.concat(cs, axis=1)
ただし、複数の値がある場合 (NOT例のように)、これはエラーをスローします。
各列の最初の非 null 値を集計する簡単な方法はありますidか? ありがとう。
これが pandas データフレームのモック例です。実際のデータフレームにはさらに多くの列と行があります。
df = pd.DataFrame([[1, None, None],[1, None, "x"],[2, None, "k"],[3,None, None], [1, None, None], [1, "y", "NOT"], [3, "p", None], [2, "ss", None], [2, None, None]])