こんにちは。
Pandas、groupbyでのapply(list)処理の後の列の追加について
店名,名前,
A店,りんご,
A店,バナナ,
A店,みかん,
A店,いちご,
B店,りんご,
C店,りんご,
C店,バナナ,
D店,りんご,
E店,りんご,
E店,バナナ,
E店,みかん,
というCSVを読み込ませて
df.columns = ['店名', '品名', '品名2', '品名3', '品名4', '品名5']
と、列名を変えて
最終的に、「df.groupby」を使用して
店名,品名,品名2,品名3,品名4,品名5,
A店,りんご,バナナ,みかん,いちご,
B店,りんご,
C店,りんご,バナナ,
D店,りんご,
E店,りんご,バナナ,みかん,
というCSVデータ出力を目指したいのですが、
まずCSV側が
店名,名前,名前,名前,名前,名前,
A店,りんご,,,,,
A店,バナナ,,,,,
A店,みかん,,,,,
A店,いちご,,,,,
B店,りんご,,,,,
C店,りんご,,,,,
C店,バナナ,,,,,
D店,りんご,,,,,
E店,りんご,,,,,
E店,バナナ,,,,,
E店,みかん,,,,,
のdf.columns = ['店名', '品名', '品名2', '品名3', '品名4', '品名5'] にあわせた6列だと
のようにちゃんとなりますが、
店名,名前,
A店,りんご,
A店,バナナ,
A店,みかん,
A店,いちご,
B店,りんご,
C店,りんご,
C店,バナナ,
D店,りんご,
E店,りんご,
E店,バナナ,
E店,みかん,
ここまでは、前回質問しておかげさまで回答を得て、
のように、ばっちり完璧に変更できました!
そこでこのコード応用してみようと思い
別途、過去いろいろな方法での皆さんからの回答をいただいたものを一つずつ試そうと
今回はgroupbyでのapply(list)処理を使ったものでデータを加工して
店名,品名,品名2,品名3,品名4,品名5,
A店,りんご,バナナ,みかん,いちご,
B店,りんご,
C店,りんご,バナナ,
D店,りんご,
E店,りんご,バナナ,みかん,
を目指したのですが、
x = df.groupby('店名', sort=False)['名前'].apply(list)
df2 = pd.DataFrame(x.to_list(), index=x.index)
df2.columns = ['店名', '品名', '品名2', '品名3', '品名4', '品名5']
の折、同じく
valueError: Length mismatch: Expected axis has 4 elements, new values have 6 elements エラーが出ます。
ただしdf2.columns = ['店名', '品名', '品名2', '品名3', '品名4', '品名5']を省くとエラーが出ないもの
があり、例によって列が足らないエラーと思い
そこで前回同様にエラー回避しようと※画像2の手順でやったり順番を入れ替えたり色々してみたのですが
.groupby~の処理後
店名,品名,品名2,品名3,品名4,品名5,
A店,りんご,バナナ,みかん,いちご,
B店,りんご,
C店,りんご,バナナ,
D店,りんご,
E店,りんご,バナナ,みかん,
へと、うまく成形できないものでしょうか?
宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/15 01:47 編集