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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

解決済

一か所だけmergeがうまくいかない

Pablito
Pablito

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

1回答

0評価

1クリップ

11閲覧

投稿2019/12/02 05:41

前提・実現したいこと

データフレームの中に、
「福岡|福岡」となっているようなカラムが3つあり、
一度.str.split('|')で区切った後、
1列目だけを抜き出し、
再度元のデータフレームに結合することで
前処理をしようとしています。

すると2つ目のカラムと元のデータフレームを
結合しようとしたとき、
データがありえないくらい大きくなってしまいました。

元のデータフレームは
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 8557 entries, 0 to 8556
Data columns (total 57 columns):
A 8557 non-null object
B 8557 non-null object
C 1241 non-null float64
D 1241 non-null object
E 1241 non-null object
F 1241 non-null object
G 1093 non-null object
H 1225 non-null object
I 4362 non-null object
J 4362 non-null float64
K 4362 non-null float64

みたいな感じです。

該当のソースコード

Python

import pandas as pd import numpy as np import datetime as dt import codecs with codecs.open("G:\属性_11月分.csv", "r", "Shift-JIS", "ignore") as file: df = pd.read_table(file, delimiter=",", dtype={'ユーザー名': object}) df.head() df.dropna(subset=['ホテル名'], inplace=True) date_birth = df['生年月日'].str.split('|', expand=True) a = date_birth[[0]] a.rename(columns= {0: '生年月日'}, inplace=True) #mergeしたらデータの個数が大きくなるところ name = df['ホテル名'].str.split('|', expand=True) b = name[[0]] b.rename(columns={0: 'ホテル名'}, inplace=True) ''' <class 'pandas.core.frame.DataFrame'> Int64Index: 1241 entries, 3 to 8555 Data columns (total 1 columns): ホテル名 1241 non-null object dtypes: object(1) memory usage: 14.5+ KB ''' live = df['居住地'].str.split('|', expand=True) c = live[[0]] c.rename(columns={0: '居住地'}, inplace=True) data = pd.merge(df, a, on='生年月日', how='left') data.info() ''' <class 'pandas.core.frame.DataFrame'> Int64Index: 1950 entries, 0 to 1949 Data columns (total 17 columns): A 1950 non-null object B 1950 non-null object C 1950 non-null float64 ホテル名 1950 non-null object D 1950 non-null object E 1950 non-null object 居住地 1522 non-null object 生年月日 1694 non-null object F 581 non-null object G 581 non-null float64 H 581 non-null float64 I 1950 non-null object J 581 non-null object K 431 non-null object L 411 non-null object M 581 non-null object N 581 non-null object #問題なし ''' #データの個数がなぜか何倍にもなる VV = pd.merge(data, b, on='ホテル名', how='left') VV.info() ''' <class 'pandas.core.frame.DataFrame'> Int64Index: 642509 entries, 0 to 642508 Data columns (total 17 columns): A 642509 non-null object B 642509 non-null object C 642509 non-null float64 ホテル名 642509 non-null object D 642509 non-null object E 642509 non-null object 居住地 574292 non-null object 生年月日 640989 non-null object F 200390 non-null object G 200390 non-null float64 H 200390 non-null float64 I 642509 non-null object J 200390 non-null object K 146738 non-null object L 139382 non-null object M 200390 non-null object N 200390 non-null object dtypes: float64(3), object(14) memory usage: 53.9+ MB なぜかデータが大きくなった '''

試したこと

pd.merge_asofやhow='inner'などを試しましたが、
解決には至りませんでした。。。

何卒宜しくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

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

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。