Podczas zapisywania elementu DataFrame Pandas w pliku csv niektóre liczby całkowite są konwertowane na wartości zmiennoprzecinkowe. Zdarza się, że w kolumnie wartości pływających brakuje wartości (np.nan
).Eksportowanie danych z brakującymi wartościami do pliku CSV w Pandach
Czy istnieje prosty sposób na uniknięcie tego? (Zwłaszcza w sposób automatyczny. - I często do czynienia z wieloma kolumnami różnych typów danych)
Na przykład
import pandas as pd
import numpy as np
df = pd.DataFrame([[1,2],[3,np.nan],[5,6]],
columns=["a","b"],
index=["i_1","i_2","i_3"])
df.to_csv("file.csv")
plony
,a,b
i_1,1,2.0
i_2,3,
i_3,5,6.0
Co chciałbym dostać to
,a,b
i_1,1,2
i_2,3,
i_3,5,6
EDYCJA: Jestem w pełni świadomy Support for integer NA - Pandas Caveats and Gotchas. Pytanie brzmi: jakie jest miłe obejście (szczególnie w przypadku, gdy istnieje wiele innych kolumn różnych typów i nie wiem z góry, które kolumny "integer" mają brakujące wartości).
Dlaczego jest to problem , nie ma sposobu na reprezentowanie 'NaN' dla ints stąd konwersja na floats. Musiałbyś zastąpić wartości 'NaN' czymś, co może być reprezentowane jako int,' 0', lub przekonwertować na ciąg znaków i zamienić łańcuch 'nan' z pustą wartością, a następnie wyeksportować – EdChum
@EdChum Wiem, że' NaN' są spławikami. Tylko irytujące jest to, że nie ma "brakującego int" (z perspektywy danych - brakujące pole jest brakującym polem, nie ma nic szczególnego w brakujących elementach pływających). Chodzi o to, że nie chcę eksportować brakującego int jako '0', ale jako puste pole (dla niektórych aplikacji konwertuję brakujące int do' -1', ale dla innych może to być problematyczne). –
@PiotrMigdal Myślę, że twój jedyny strzał w tym przypadku to zamiana na ciągi i wypełnienie nan pustymi ciągami, jak już zasugerowałem – Korem