2016-11-09 4 views
3

Comment obtenir des pandas pour ajouter un entier et conserver le type de données entier? Je sais que je peux df.test.astype (int) à la colonne entière après avoir mis les données, mais si je peux le faire au moment où j'ajoute les données, il semble que ce serait une meilleure façon. Voici un exemple:append pandas dataframe est automatiquement converti en float mais veut int

from bitstring import BitArray 
import pandas as pd 
df = pd.DataFrame() 

test = BitArray('0x01') 
test = int(test.hex) 
print(test) 
df = df.append({'test':test, 'another':5}, ignore_index=True) 

print(df.test) 
print(df.another) 

Voici la sortie:

1 
0 1.0 
Name: test, dtype: float64 
0 5.0 
Name: another, dtype: float64 

Il est en train de changer les entiers à flotteurs.

Répondre

3

C'est parce que votre base de données initiale est vide. Initialisez-le avec une colonne entière.

df = pd.DataFrame(dict(A=[], test=[], another=[]), dtype=int) 
df.append(dict(A=3, test=4, another=5), ignore_index=True) 

enter image description here


Qu'avais-je fait

df = pd.DataFrame() 
df.append(dict(A=3, test=4, another=5), ignore_index=True) 

enter image description here

+0

est-il possible de faire différentes dtypes par colonne? – kaminsknator