質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

Python DataFrameのセルに複数の値がある場合、その値ごと新しい行にする方法

SnowBallEffect
SnowBallEffect

総合スコア28

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

2回答

0リアクション

0クリップ

139閲覧

投稿2022/08/11 08:13

実現したいこと

DataFrameのセルの中に値が一つある場合と複数ある場合があります。例えばこんな感じです。

AgeConsole 1Console 2Console3Console 4
15PS5XBox, Wii UGameboyPS2
16GameCubePS4, GameBoy Color, PS5NaNXbox 360
17PS3, PS5PS4PS VitaNaN

最終的にはこのようにしたいのです:

AgeGame Console Combined
15PS5
15Xbox
15Wii U
15Gameboy
15PS2
16GameCube
16PS4
16GameBoy Color
16PS5
16Xbox 360
17PS3
17PS5
17PS4
17PS Vita
  • ▲▲機能を動作するようにする

該当のソースコード

Python

import pandas as pd game = r"C:\users\Gamer\Desktop\game.xlsx" df = pd.read_excel(game) こちらのエクセルは他にも沢山列があるのですが、割愛致します。 #複数の値がある場合、必ずこのstringがあるので消します _x000D_\n' #空白のセルのdtypeは'float'になっているのでstrで変換します。 下記がそのコードです。 df['Console 1'] = df['Console 1'].str.split('_x000D_\n').astype('str').replace('nan', '') df['Console 2'] = df['Console 2'].str.split('_x000D_\n').astype('str').replace('nan', '') df['Console 3'] = df['Console 3'].str.split('_x000D_\n').astype('str').replace('nan', '') #ここでゲームコンソールを一つにまとめるので新しい列 Game Console Combinedを作ります。 df['Game Console Combined'] = df['Console 1'] + df['Console 2'] + df['Console 3] +df['Console 4] print(df['Game Console Combined'][0]) だとこのようにoutputされます。 ['PS5']['XBox', 'Wii U']['Gameboy']['PS2'] 上記の例だとitemは5つなので、下記のコードで新しい行が5つ作られるかと思ったら作られず print(df.explode('Game Console Combined').head()) エラーメッセージは出てきません。

試したこと

for console in df['Game Console Combined'].str.split(','):
for type in console:
print(type[1])

これだったら
GameCube
PS4, GameBoy Color PS5

Xbox 360

と出てくるのですが、それでも値が複数あるセルは複数として出てきます。

どうやったら、複数の値があるセルをその値の数だけ行を足し、一つの値があるセルも行に足せるのでしょうか?

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/08/11 11:31

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。