Chciałbym wyświetlić ramkę danych pandy z podanym formatem przy użyciu print()
i IPythona display()
. Na przykład:
df = pd.DataFrame([123.4567, 234.5678, 345.6789, 456.7890],
index=['foo','bar','baz','quux'],
columns=['cost'])
print df
cost
foo 123.4567
bar 234.5678
baz 345.6789
quux 456.7890
Chciałbym jakoś zmusić to do drukowania
cost
foo $123.46
bar $234.57
baz $345.68
quux $456.79
bez konieczności modyfikowania samych danych lub tworzenia kopii, wystarczy zmienić sposób ich wyświetlania.
W jaki sposób mogę to zrobić?
cost
to jedyna kolumna zmiennoprzecinkowa, czy są inne kolumny zmiennoprzecinkowe, których nie należy formatować$
?Odpowiedzi:
plony
ale działa to tylko wtedy, gdy chcesz, aby każda liczba zmiennoprzecinkowa była sformatowana za pomocą znaku dolara.
W przeciwnym razie, jeśli chcesz formatować dolara tylko dla niektórych liczb zmiennoprzecinkowych, myślę, że będziesz musiał wstępnie zmodyfikować ramkę danych (przekonwertować te zmiennoprzecinkowe na ciągi):
plony
źródło
with pd.option_context('display.float_format', '${:,.2f}'.format'):
'
przed nawiasem zamykającym w komentarzu @AndreHolzner; w przeciwnym razie działa jak urok!Jeśli nie chcesz modyfikować ramki danych, możesz użyć niestandardowego programu formatującego dla tej kolumny.
plony
źródło
pd.options.display.float_format = '${:,.2f}'.format
Od wersji Pandas 0.17 istnieje teraz system stylizacji, który zasadniczo zapewnia sformatowane widoki ramki DataFrame przy użyciu ciągów formatu Python :
który wyświetla
To jest obiekt widoku; sama ramka DataFrame nie zmienia formatowania, ale aktualizacje w ramce danych są odzwierciedlane w widoku:
Jednak wydaje się, że ma pewne ograniczenia:
Wydaje się, że dodanie nowych wierszy i / lub kolumn lokalnie powoduje niespójność w stylizowanym widoku (nie powoduje dodania etykiet wierszy / kolumn):
który wygląda dobrze, ale:
Formatowanie działa tylko dla wartości, a nie dla wpisów indeksu:
źródło
Podobnie jak w przypadku unutbu powyżej, możesz również użyć
applymap
w następujący sposób:źródło
df.to_csv()
aby upewnić się, że wszystkie kolumny w moim.csv
pliku mają tę samą „szerokość cyfr”. Dzięki!Lubię używać pandas.apply () z formatem Pythona ().
Ponadto można go łatwo używać z wieloma kolumnami ...
źródło
Możesz także ustawić ustawienia regionalne dla swojego regionu i ustawić float_format, aby używał formatu waluty. Spowoduje to automatyczne ustawienie znaku $ dla waluty w USA.
źródło
Podsumowanie:
źródło