2017-06-19 14 views
3

df1とdf2という2つのデータフレームで作業します。 Customer_IDをマージしようとしています。顧客IDのデータ型は両方とも同じであるようです。python pandas列のデータ型に影響があります。

DF1:

Customer_ID | Flag 
12345   A 

がDF2:それは働いていたいくつかのCustomer_IDsのために、それはしなかった他の人のための

new_df = df2.merge(df1, on='Customer_ID', how='left') 

Customer_ID | Transaction_Value 
12345   258478 

私は2つのテーブルをマージします。私はデータ型をチェックし、それらが同じである

Customer_ID | Transaction_Value | Flag 
    12345   258478   NaN 

::私はDF1アップロードすると

df1.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 873353 entries, 0 to 873352 
Data columns (total 2 columns): 
Customer_ID 873353 non-null object 
Flag  873353 non-null object 
dtypes: object(2) 
memory usage: 20.0+ MB 

df2.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 873353 entries, 0 to 873352 
Data columns (total 2 columns): 
Customer_ID 873353 non-null object 
Transaction_Value  873353 int64 
dtypes: object(2) 
memory usage: 20.0+ MB 

は、私はこのメッセージが表示されました:

C:\Users\xxx\AppData\Local\Continuum\Anaconda2\lib\site-packages\IPython\core\interactiveshell.py:2717: DtypeWarning: Columns (1) have mixed types. Specify dtype option on import or set low_memory=False. 
    interactivity=interactivity, compiler=compiler, result=result) 
この例のために、私はこの結果になるだろう

顧客IDが存在するかどうかを確認したいときは、2つのデータフレームで異なるIDを指定する必要があることを認識しました。

df1.loc[df1['Customer_ID'] == 12345] 

df2.loc[df2['Customer_ID'] == '12345'] 
+0

私はそれとは細かい作業が、問題はデータ型ではなく、テスト – Vaishali

+0

私は問題が私の列Cuにあると思う複数のデータ型を持つstomer_IDがエラーメッセージを返します。どうすれば修正できますか? – jeangelj

+1

@piRSquaredちょうどそれを処理する答えを投稿しました – Vaishali

答えて

4

Customer_ID両方のケースでdtype==objectである...しかし、それは個々の要素が同じ型であることを意味するものではありません。あなたは確認する必要があり、両方のstrまたは使用int

dtype = dict(Customer_ID=int) 

df1.astype(dtype).merge(df2.astype(dtype), 'left') 

    Customer_ID Flag Transaction_Value 
0  12345 A    258478 

を使用してint


str

dtype = dict(Customer_ID=str) 

df1.astype(dtype).merge(df2.astype(dtype), 'left') 

    Customer_ID Flag Transaction_Value 
0  12345 A    258478 
+0

これは左マージであることをどのように指定しますか? – jeangelj

+0

それは私たちには必要ないのですか?だからdtype = dict( 'Customer_ID' = str)?? – jeangelj

+0

'dtype = {'Customer_ID':str}'または 'dtype = dict(Customer_ID = str)'のようにしてください。どちらも有効です。私は後者のための文体的な好みがあります。 – piRSquared

関連する問題