Я пишу клейкий код, соединяющий библиотеки, которые используют Pandas DataFrames и Numpy массивы, и я сталкиваюсь с некоторыми проблемами, определяющими, какие столбцы являются 'объектами / строками' в Numpy массивах, которые изначально созданы из Pandas Dataframes.
import pandas as pd
test_df = pd.DataFrame({"a": [1, 2, 3], "b": ["one", "two", "three"]})
test_arr = test.values
test_df2 = pd.DataFrame(test_arr)
test_df.dtypes
# a int64, b object
test_df2.dtypes
# 0 object, 1 object
Я бы ожидал, что test_df2.dtypes будет int64 & object, а не обоим объектом.
Как найти типы данных исходных столбцов Pandas DataFrame, используя информацию в массиве numpy 'test_arr'?
Я могу добиться желаемого поведения, используя следующий подход, но Интересно, есть ли более эффективное / элегантное решение? Я также беспокоюсь, что этот подход может быть хрупким:
test_df3 = pd.DataFrame(test_arr).apply(
lambda x: pd.to_numeric(x, errors="ignore"), axis=1
)
EDIT - несколько решений, использующих типы данных test_df. У меня нет доступа к этому или контроля над созданием test_arr. Я хочу найти типы данных test_df, используя ТОЛЬКО test_arr.