2016-10-26 14 views
8

私にはDataFrameがあります。関連する2つの列は、次のとおりです.1つはintの列で、もう1つはstrの列です。パンダが整数を浮動小数点に変換するのを停止します

私はint列にNaNを挿入した場合intにはNaN値がないため、パンダはfloatにすべてのintを変換することを理解しています。私はstr列にNoneを挿入すると

はしかし、パンダは、同様にfloatにすべての私のintを変換します。これは私には意味をなさない - なぜ私が2列目に入れた値は1列目に影響するのですか?ここで

は、単純な作業の例(Pythonの2)です:

import pandas as pd 
df = pd.DataFrame() 
df["int"] = pd.Series([], dtype=int) 
df["str"] = pd.Series([], dtype=str) 
df.loc[0] = [0, "zero"] 
print df 
print 
df.loc[1] = [1, None] 
print df 

出力は

int str 
0 0 zero 

    int str 
0 0.0 zero 
1 1.0 NaN 

ある出力は以下のようにする方法はあります:

int str 
0 0 zero 

    int str 
0 0 zero 
1 1 NaN 

なし最初の列をintにリキャストします。

  • 私は、列が整数である の実際のデータのでint代わりのfloatを使用して好みます。回避策がない場合は、 floatを使用します。私はので、私の実際のコードに書き直す必要がない好む

  • 、私は
    は、実際のdtypeを格納しません。

  • また、行ごとに挿入されたデータが必要です。

答えて

11

あなたがdtype=objectを設定した場合は、お使いのシリーズは、任意のデータ型を含むことができるようになります:

df["int"] = pd.Series([], dtype=object) 
df["str"] = pd.Series([], dtype=str) 
df.loc[0] = [0, "zero"] 
print(df) 
print() 
df.loc[1] = [1, None] 
print(df) 

    int str 
0 0 zero 
1 NaN NaN 

    int str 
0 0 zero 
1 1 None 
+1

あなたはこの1つは200列を持つCSVファイルを読み込む、私にどのように役立ったかを想像することはできません...実際にI dtypesのための精巧なdictと実験され、何度も何度も繰り返し始めますありがとうございました。 –

関連する問題