前提・実現したいこと
データフレームの中に、
「福岡|福岡」となっているようなカラムが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
1import pandas as pd 2import numpy as np 3import datetime as dt 4import codecs 5 6with codecs.open("G:\属性_11月分.csv", 7 "r", "Shift-JIS", "ignore") as file: 8 df = pd.read_table(file, delimiter=",", dtype={'ユーザー名': object}) 9df.head() 10 11df.dropna(subset=['ホテル名'], inplace=True) 12 13date_birth = df['生年月日'].str.split('|', expand=True) 14a = date_birth[[0]] 15a.rename(columns= {0: '生年月日'}, inplace=True) 16 17#mergeしたらデータの個数が大きくなるところ 18name = df['ホテル名'].str.split('|', expand=True) 19b = name[[0]] 20b.rename(columns={0: 'ホテル名'}, inplace=True) 21 22''' 23<class 'pandas.core.frame.DataFrame'> 24Int64Index: 1241 entries, 3 to 8555 25Data columns (total 1 columns): 26ホテル名 1241 non-null object 27dtypes: object(1) 28memory usage: 14.5+ KB 29''' 30 31live = df['居住地'].str.split('|', expand=True) 32c = live[[0]] 33c.rename(columns={0: '居住地'}, inplace=True) 34 35data = pd.merge(df, a, on='生年月日', how='left') 36data.info() 37 38''' 39<class 'pandas.core.frame.DataFrame'> 40Int64Index: 1950 entries, 0 to 1949 41Data columns (total 17 columns): 42A 1950 non-null object 43B 1950 non-null object 44C 1950 non-null float64 45ホテル名 1950 non-null object 46D 1950 non-null object 47E 1950 non-null object 48居住地 1522 non-null object 49生年月日 1694 non-null object 50F 581 non-null object 51G 581 non-null float64 52H 581 non-null float64 53I 1950 non-null object 54J 581 non-null object 55K 431 non-null object 56L 411 non-null object 57M 581 non-null object 58N 581 non-null object 59#問題なし 60''' 61#データの個数がなぜか何倍にもなる 62VV = pd.merge(data, b, on='ホテル名', how='left') 63 64VV.info() 65 66''' 67<class 'pandas.core.frame.DataFrame'> 68Int64Index: 642509 entries, 0 to 642508 69Data columns (total 17 columns): 70A 642509 non-null object 71B 642509 non-null object 72C 642509 non-null float64 73ホテル名 642509 non-null object 74D 642509 non-null object 75E 642509 non-null object 76居住地 574292 non-null object 77生年月日 640989 non-null object 78F 200390 non-null object 79G 200390 non-null float64 80H 200390 non-null float64 81I 642509 non-null object 82J 200390 non-null object 83K 146738 non-null object 84L 139382 non-null object 85M 200390 non-null object 86N 200390 non-null object 87dtypes: float64(3), object(14) 88memory usage: 53.9+ MB 89なぜかデータが大きくなった 90'''
試したこと
pd.merge_asofやhow='inner'などを試しましたが、
解決には至りませんでした。。。
何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/03 04:47