2013-07-01 18 views
5

Pandaların int türetme için sütun türlerini güncelleme sırasında değiştirmesinin bir nedeni var mı ve bunu yapmasını engelleyebilir miyim? İşte sorun buradapandas içinde istenmeyen tip dönüşümü.DataFrame.update

import pandas as pd 
import numpy as np 

df = pd.DataFrame({'int': [1, 2], 'float': [np.nan, np.nan]}) 

print('Integer column:') 
print(df['int']) 

for _, df_sub in df.groupby('int'): 
    df_sub['float'] = float(df_sub['int']) 
    df.update(df_sub) 

print('NO integer column:') 
print(df['int']) 
+0

bu bir hata (düzeltmek için biraz önemsiz): https://github.com/pydata/pandas/issues/4094 – Jeff

+0

elbette her zaman yapabilirsiniz '' df ['int']. int) '' cevap için – Jeff

cevap

3

bazı örnek kod Bunun nedeni oluyor geçerli: etkili bir sütun üzerinde belirli değerleri maskeleme ve (Güncellemelerinizle) bunların yerine olduğundan, bazı değerler `nan

haline gelebilir bir tamsayı dizisi bu imkansızdır, bu yüzden sayısal dtypes apriori float'a (verimlilik için) dönüştürülür, ilk olarak kontrol etmek daha pahalı olduğu için bu

bir geri dönüş değişikliği mümkündür ... sadece şu anda kodda değil , bunun için bu bir hata (düzeltmek için biraz önemsiz): github.com/pydata/pandas/issues/40 94

+0

thx! – Joerg