Pracowałem z danymi importowanymi z pliku CSV. Pandy zmieniły niektóre kolumny na zmiennoprzecinkowe, więc teraz liczby w tych kolumnach są wyświetlane jako zmiennoprzecinkowe! Jednak muszę je wyświetlać jako liczby całkowite lub bez przecinka. Czy istnieje sposób przekonwertować je na liczby całkowite lub nie wyświetlać przecinka?
230
df.col = df.col.astype(int)
df = df.astype(int)
Odpowiedzi:
Aby zmodyfikować wyjście float, wykonaj następujące czynności:
źródło
df.a = df.a.astype(float)
? Czy to robi kopię (nie jestem pewien, jak używany jestcopy
parametrastype()
)? W każdym razie, aby zaktualizować typ „na miejscu”?DF.({'200': {'#': 354, '%': 0.9971830985915493}, '302': {'#': 1, '%': 0.0028169014084507044}})
Uwaga # przekonwertować na liczbę zmiennoprzecinkową i są to wiersze, a nie kolumny. ponieważ każdy zSeries
nich może przechowywać tylko jeden jednolity typ?dtype
? Jeśli tak,dtype
to musisz utworzyć te kolumny, ponieważdtype
object
pozwala to na mieszanie, w przeciwnym razie moja rada to po prostu użycie zmiennoprzecinkowe, a podczas porównańnp.isclose
Użyj
pandas.DataFrame.astype(<type>)
funkcji do manipulowania typami kolumn.EDYTOWAĆ:
Aby obsłużyć brakujące wartości:
źródło
Biorąc pod uwagę następującą ramkę danych:
Korzystając z listy nazw kolumn, zmień typ wielu kolumn za pomocą
applymap()
:Lub dla pojedynczej kolumny z
apply()
:źródło
ValueError: ('cannot convert float NaN to integer', u'occurred at index <column_name>')
df['C'] = df['C'].dropna().apply(np.int64)
Jest to szybkie rozwiązanie, jeśli chcesz przekonwertować więcej kolumn
pandas.DataFrame
z liczb zmiennoprzecinkowych na liczbę całkowitą, biorąc pod uwagę również przypadek, w którym możesz mieć wartości NaN.Próbowałem z
else x)
ielse None)
, ale wynik wciąż ma liczbę zmiennoprzecinkową, więc użyłemelse ""
.źródło
""
wszystkie wartości wcol
Rozwijając @Ryan G wspomniane użycie
pandas.DataFrame.astype(<type>)
metody, można użyćerrors=ignore
argumentu do konwersji tylko tych kolumn, które nie powodują błędu, co znacznie upraszcza składnię. Oczywiście należy zachować ostrożność przy ignorowaniu błędów, ale w przypadku tego zadania jest to bardzo przydatne.Z dokumentów pandas.DataFrame.astype :
źródło
źródło
Aby przekonwertować wszystkie zmiennoprzecinkowe kolumny na int
źródło
Oto prosta funkcja, która sprowadza spławik do najmniejszej możliwej liczby całkowitej, która nie traci żadnych informacji. Dla przykładów,
100.0 można przekonwertować z liczby zmiennoprzecinkowej na liczbę całkowitą, ale 99,9 nie może (bez utraty informacji do zaokrąglania lub obcinania)
Dodatkowo 1.0 może być zesłane do końca
int8
bez utraty informacji, ale najmniejszym typem całkowitym dla 100_000.0 jestint32
Przykłady kodu:
źródło
Kolumny, które należy przekonwertować na int, można wymienić w słowniku również jak poniżej
źródło
źródło
astype(int)
był już wspomniany kilka razy. Ta odpowiedź nie dodaje nic nowego.