Я видел Вставка строк в pandas DataFrame при сохранении типов данных столбцов , и я знаю, что
, поскольку NaN является плавающей точкой, добавляя NaN к серии может привести к тому, что оно будет преобразовано в всплывающее или преобразовано в объект.
... но я не могу точно сказать из этих сообщений, есть ли решение для моего варианта использования:
Итак, я хочу динамически построить pandas DataFrame, начиная с одного определенного столбца, затем добавить дополнительные столбцы - все с целочисленными данными; из-за этого, очевидно, некоторые значения строки будут неопределенными, то есть NaN. Вот краткий пример:
import pandas as pd
print("pandas.__version__ {}".format(pd.__version__))
# initialize dataframe with one column
test_df = pd.DataFrame(columns=["time"])
# "append column" - add data with a newly defined column
test_df = test_df.append({'time': 20, 'varA': 14}, ignore_index=True)
# (same)
test_df = test_df.append({'time': 5673547, 'varB': 78}, ignore_index=True)
# (same)
test_df = test_df.append({'time': 9480530495459073, 'varC': 4567457}, ignore_index=True)
print(test_df)
print(test_df.astype(pd.Int64Dtype()))
Это печатает:
pandas.__version__ 1.0.2
time varA varB varC
0 20 14.0 NaN NaN
1 5.67355e+06 NaN 78.0 NaN
2 9.48053e+15 NaN NaN 4567457.0
time varA varB varC
0 20 14 <NA> <NA>
1 5673547 <NA> 78 <NA>
2 9480530495459072 <NA> <NA> 4567457
Итак, хотя я могу немного обойти это, построив DataFrame как float, затем приведу его к целому числу - обратите внимание, что я указал 9480530495459073 - и, тем не менее, после приведения я напечатал 9480530495459072, что является недопустимой ошибкой для моего варианта использования.
Есть ли у меня какие-либо другие варианты для создания DataFrame, подобного этому (с целым числом данные, а новые столбцы добавляются динамически - что приведет к отсутствию / неопределенности / NaN-значениям), чтобы он работал с целыми числами внутри? (или, возможно, работать с другими типами данных внутри, если я не теряю целочисленную точность?)