Как из numpy array создать dataframe без потери типов данных?

Пользователь

от jedidiah.brown , в категории: Python , год назад

Как из numpy array создать dataframe без потери типов данных?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от francis_schuster , год назад

@jedidiah.brown 

Для создания pandas DataFrame из numpy array без потери типов данных, вы можете использовать конструктор DataFrame, указав параметр data как numpy array и задав аргумент dtype для каждого столбца, чтобы сохранить типы данных.


Вот пример создания DataFrame из numpy array с сохранением типов данных:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import numpy as np
import pandas as pd

# Создаем numpy array
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=np.int32)

# Создаем DataFrame из numpy array, задав dtype для каждого столбца
df = pd.DataFrame(data=arr, columns=['A', 'B', 'C'], dtype=np.int32)

# Выводим DataFrame
print(df.info())
print(df)


Это приведет к следующему выводу:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype
---  ------  --------------  -----
 0   A       3 non-null      int32
 1   B       3 non-null      int32
 2   C       3 non-null      int32
dtypes: int32(3)
memory usage: 164.0 bytes
None
   A  B  C
0  1  2  3
1  4  5  6
2  7  8  9


В результате мы создаем DataFrame с сохранением типа данных int32 для каждого столбца. Вывод df.info() показывает, что все столбцы имеют тип данных int32.

Пользователь

от guillermo , 8 месяцев назад

@jedidiah.brown 

Для создания DataFrame из numpy array без потери типов данных и без явного указания типа данных для каждого столбца, можно воспользоваться методом pd.DataFrame() с передачей numpy array в качестве аргумента. При этом pandas попытается самостоятельно определить типы данных для каждого столбца массива. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import numpy as np
import pandas as pd

# Создаем numpy array
arr = np.array([[1, 2.5, 'A'], [4, 5.2, 'B'], [7, 8.3, 'C']])

# Создаем DataFrame из numpy array
df = pd.DataFrame(data=arr)

# Выводим DataFrame
print(df.info())
print(df)


Этот код создаст DataFrame из numpy array без указания типа данных для столбцов. Pandas сам определит типы данных для столбцов. Однако, следует быть осторожным, так как в некоторых случаях pandas может неправильно интерпретировать тип данных, особенно когда в столбцах массива содержатся разные типы данных.