PySpark для Pandas функция меняет тип столбца - PullRequest
2 голосов
/ 24 марта 2020

У меня есть фрейм данных pyspark со следующей схемой:

root
 |-- src_ip: integer (nullable = true)
 |-- dst_ip: integer (nullable = true)

При преобразовании этого фрейма данных в pandas через toPandas() тип столбца изменяется от целочисленного в искре до плавающего в pandas:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 9847 entries, 0 to 9846
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   src_ip  9607 non-null   float64
 1   dst_ip  9789 non-null   float64
dtypes: float64(2)
memory usage: 154.0 KB

Есть ли способ сохранить целочисленное значение с toPandas() или я могу привести только тип столбца в результирующем pandas кадре данных?

1 Ответ

1 голос
/ 08 апреля 2020

SPARK-21766 (https://issues.apache.org/jira/browse/SPARK-21766) объясняет поведение, которое вы наблюдали.

В качестве обходного пути вы можете вызвать fillna (0), прежде чем Pandas ():

df1 = sc.createDataFrame([(0, None), (None, 8)], ["src_ip", "dest_ip"])
print(df1.dtypes)

# Reproduce the issue
pdf1 = df1.toPandas()
print(pdf1.dtypes)

# A workaround
pdf2 = df1.fillna(0).toPandas()
print(pdf2.dtypes)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...