Converter carros alegóricos em Pandas?
Trabalhei com dados importados de um CSV. Os Pandas mudaram algumas colunas para flutuar, então agora os números nessas colunas são exibidos como pontos flutuantes! No entanto, preciso que sejam exibidos como inteiros, ou, sem vírgula. Existe uma maneira de convertê-los em inteiros ou não diplay a vírgula?
111
Author: Bibhas Debnath, 2014-01-22
6 answers
Para modificar a saída flutuante faça isto:
df= pd.DataFrame(range(5), columns=['a'])
df.a = df.a.astype(float)
df
Out[33]:
a
0 0.0000000
1 1.0000000
2 2.0000000
3 3.0000000
4 4.0000000
pd.options.display.float_format = '{:,.0f}'.format
df
Out[35]:
a
0 0
1 1
2 2
3 3
4 4
122
Author: EdChum, 2014-01-22 19:07:02
.astype(<type>)
função para manipular a coluna dtypes.
>>> df = pd.DataFrame(np.random.rand(3,4), columns=list("ABCD"))
>>> df
A B C D
0 0.542447 0.949988 0.669239 0.879887
1 0.068542 0.757775 0.891903 0.384542
2 0.021274 0.587504 0.180426 0.574300
>>> df[list("ABCD")] = df[list("ABCD")].astype(int)
>>> df
A B C D
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0
Editar:
Para lidar com os valores em falta:
>>> df
A B C D
0 0.475103 0.355453 0.66 0.869336
1 0.260395 0.200287 NaN 0.617024
2 0.517692 0.735613 0.18 0.657106
>>> df[list("ABCD")] = df[list("ABCD")].fillna(0.0).astype(int)
>>> df
A B C D
0 0 0 0 0
1 0 0 0 0
2 0 0 0 0
>>>
113
Author: Ryan G, 2017-12-08 18:36:56
Usando uma lista de nomes de colunas, mude o tipo para várias colunas com .applymap() ou para uma única coluna com .aplicar().
df = pd.DataFrame(10*np.random.rand(3, 4), columns=list("ABCD"))
A B C D
0 8.362940 0.354027 1.916283 6.226750
1 1.988232 9.003545 9.277504 8.522808
2 1.141432 4.935593 2.700118 7.739108
cols = ['A', 'B']
df[cols] = df[cols].applymap(np.int64)
A B C D
0 8 0 1.916283 6.226750
1 1 9 9.277504 8.522808
2 1 4 2.700118 7.739108
df['C'] = df['C'].apply(np.int64)
A B C D
0 8 0 1 6.226750
1 1 9 9 8.522808
2 1 4 2 7.739108
Esta é uma solução rápida no caso de querer converter mais colunas do seu DataFrame de Pandas df de float para inteiro, considerando também o caso de poder ter valores NaN.
cols = ['col_1', 'col_2', 'col_3', 'col_4']
for col in cols:
df[col] = df[col].apply(lambda x: int(x) if x == x else "")
Tentei com:
else x)
else None)
Mas o resultado ainda é ter o número do flutuador, por isso usei else ""
4
Author: enri, 2017-06-20 11:04:33
import pandas as pd;
right = pd.DataFrame({'C': [1.002, 2.003],
'D': [1.009, 4.55],
"key":['K0', 'K1']})
C D key
0 1.002 1.009 K0
1 2.003 4.550 K1
right['C'] = right.C.astype(int)
C D key
0 1 1.009 K0
1 2 4.550 K1
3
Author: user8051244, 2017-05-23 03:51:03
df_18['cyl'].value_counts()
4.0 365
6.0 246
8.0 153
Nome: cyl, dtype: int64 Em [38]:
Int df_18 ['cyl']=df_18 ['cyl'].astype (int)
4 365
6 246
8 153
Nome: cyl, dtype: int64
-2
Author: RAHUL KUMAR, 2018-02-06 01:57:32