2016-10-26 19 views
8

DataFrame var. İki ilgili sütun şunlardır: Bir sütun int ve diğeri str bir sütundur.Pandaları int ile flora dönüştürmekten durdurma

Ben int sütuna NaN eklerseniz bir int hiçbir NaN değerini olmadığı için, Pandalar float içine tüm int dönüştüreceğini anlıyorum. Ben str sütuna None eklediğinizde

Ancak, Pandalar yanı Hepsi benim int float dönüşür. Bu bana mantıklı gelmiyor - 2 numaralı sütuna koyduğum değer neden sütun 1'i etkiler?

int str 
0 0 zero 

    int str 
0 0 zero 
1 1 NaN 

olmadan: Aşağıdaki çıktıyı yapmak için herhangi bir yolu var mı

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 

çıkış

int str 
0 0 zero 

    int str 
0 0.0 zero 
1 1.0 NaN 

geçerli:

Burada basit çalışma örneği (Python 2) var İlk sütunu int'a kadar yeniden.

  • ben gerçek veriler bu sütun tam sayılardır çünkü int yerine float kullanarak tercih ederim. Çözüm yoksa, ben sadece float kullanın. Çünkü benim gerçek kodda recast zorunda değil tercih

  • , ben
    mağaza gerçek dtype yok.

  • Ayrıca satır satır eklenmiş verilere de ihtiyacım var.

cevap

11

Eğer dtype=object ayarlarsanız, dizi keyfi veri türlerini içeriyor mümkün olacaktır:

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 
bu bir 200 sütunlu bir csv okuma, bana nasıl yardım Sen aslında ... hayal edemiyorum
+1

Dtypes için ayrıntılı bir dict ile deneyler, sadece tekrar tekrar başlamak için. Teşekkür ederim. –