実現したいこと
DataFrameのセルの中に値が一つある場合と複数ある場合があります。例えばこんな感じです。
Age | Console 1 | Console 2 | Console3 | Console 4 |
---|---|---|---|---|
15 | PS5 | XBox, Wii U | Gameboy | PS2 |
16 | GameCube | PS4, GameBoy Color, PS5 | NaN | Xbox 360 |
17 | PS3, PS5 | PS4 | PS Vita | NaN |
最終的にはこのようにしたいのです:
Age | Game Console Combined |
---|---|
15 | PS5 |
15 | Xbox |
15 | Wii U |
15 | Gameboy |
15 | PS2 |
16 | GameCube |
16 | PS4 |
16 | GameBoy Color |
16 | PS5 |
16 | Xbox 360 |
17 | PS3 |
17 | PS5 |
17 | PS4 |
17 | PS Vita |
- ▲▲機能を動作するようにする
該当のソースコード
Python
1import pandas as pd 2game = r"C:\users\Gamer\Desktop\game.xlsx" 3df = pd.read_excel(game) 4 5こちらのエクセルは他にも沢山列があるのですが、割愛致します。 6 7#複数の値がある場合、必ずこのstringがあるので消します _x000D_\n' 8#空白のセルのdtypeは'float'になっているのでstrで変換します。 9 10下記がそのコードです。 11 12df['Console 1'] = df['Console 1'].str.split('_x000D_\n').astype('str').replace('nan', '') 13df['Console 2'] = df['Console 2'].str.split('_x000D_\n').astype('str').replace('nan', '') 14df['Console 3'] = df['Console 3'].str.split('_x000D_\n').astype('str').replace('nan', '') 15 16#ここでゲームコンソールを一つにまとめるので新しい列 Game Console Combinedを作ります。 17df['Game Console Combined'] = df['Console 1'] + df['Console 2'] + df['Console 3] +df['Console 4] 18 19print(df['Game Console Combined'][0]) 20だとこのようにoutputされます。 21 22['PS5']['XBox', 'Wii U']['Gameboy']['PS2'] 23 24上記の例だとitemは5つなので、下記のコードで新しい行が5つ作られるかと思ったら作られず 25print(df.explode('Game Console Combined').head()) 26 27エラーメッセージは出てきません。
試したこと
for console in df['Game Console Combined'].str.split(','):
for type in console:
print(type[1])
これだったら
GameCube
PS4, GameBoy Color PS5
Xbox 360
と出てくるのですが、それでも値が複数あるセルは複数として出てきます。
どうやったら、複数の値があるセルをその値の数だけ行を足し、一つの値があるセルも行に足せるのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/12 05:55