###前提・実現したいこと
|A|B|C|D|
|:--|:--:|--:|
|a|NaN|NaN|NaN|
|a|NaN|NaN|NaN|
|a|b|NaN|NaN|
|a|b|c|NaN|
|...|
|a|b|c|d|
|a|b|NaN|NaN|
|a|b|c|d|
を
|A|B|C|D|
|:--|:--:|--:|
|a||||
|a||||
|a|b|||
|a|b|||
|b|c|||
|...|
|a|b|
|b|c|
|c|d|
|a|b|
|a|b|
|b|c|
|c|d|
に変形したいのですがうまくいきません。
どなたかご教授いただけませんでしょうか...。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
python3
1df = pd.read_csv("Sample.csv") 2 3for line in tqdm(len(df)): 4 a = np.array(line.count()) 5 num = len(np.where(a==1)[0]) 6 if num == 1: 7 pass 8 elif num == 2: 9 pass 10 elif num == 3: 11 #やりたいこと→該当する行が[a,b,c]となっているので、[a,b][b,c]のように抽出し、上から順番に積み上げる 12 elif num == 4: 13 #やりたいこと→該当する行が[a,b,c,d]となっているので、[a,b][b,c][c,d]のように抽出し、順番に積み上げる
###試したこと
未完成かつとても煩雑な方法ではあると思うのですが、NaNでない要素を行毎に数え、それぞれの数の場合に要素を二つづつ取り出し下段にペーストしていくというコーディングを考えていました。
もっとスマートな方法があればそちらの方をご教授していただければと思います...。
###補足情報(言語/FW/ツール等のバージョンなど)
イメージとしましてはデータフレームを行ごとに読み込んでいって、3つ以上の要素がある行、
例えば
|列1|列2|列3|列4|
|:--|:--:|--:|
|a|b|c|d|
を
列1 | 列2 |
---|---|
a | b |
と
列1 | 列2 |
---|---|
b | c |
と
列1 | 列2 |
---|---|
c | d |
という風に取り出して、
列1 | 列2 |
---|---|
a | b |
b | c |
c | d |
のように積むという作業を全ての行で実行するというものなのですが、なかなかコードが組み立てられずに苦戦しています...。
回答2件
あなたの回答
tips
プレビュー