gpt4 book ai didi

python - 在Python中有效地将稀疏数据帧转换为密集数据帧

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:13 25 4
gpt4 key购买 nike

我手头有一个问题,我有一个数据框,如下所示:

输入数据框:

VEHICLE_HASH    LS_ID   UPPER_BOUND LS_RATIO

00061E31E25B36 PROMISELS103 2500.0 0.000684

00061E31E25B36 PROMISELS103a 3000.0 0.002001

00061E31E25B36 PROMISELS104 3500.0 0.004128

0006254DB52066 PROMISELS104 4000.0 0.003216

0006254DB52066 PROMISELS103 4500.0 0.001114

0006254DB52066 PROMISELS105 5000.0 0.020767

这是一个示例数据帧,实际数据帧的大小为(53526122 x 4)。现在我想将此数据帧转换为 OneHotEncoded 矩阵,其特征是从 LS_IDUPPER_BOUND 列组合的字符串中提取的。我能够进行一次热编码并将矩阵转换为稀疏矩阵,然后将稀疏矩阵与 LS_ratio 相乘,以获得 xgboost 分类器的结果输入稀疏矩阵。

现在我想将数据帧转换为这种密集格式,每行具有唯一的 HASH 和多列特征,这样我就可以使用这些数据进行 PCA。但我得到内存不足错误。这可以有效地完成吗?

预期输出:

HASH    PROMISELS103a_3000.0    PROMISELS103_2500.0 PROMISELS103_4500.0 PROMISELS104_3500.0 PROMISELS104_4000.0 PROMISELS105_5000.0

00061E31E25B36 0.002001 0.000684 0 0 0.004128 0

0006254DB52066 0 0 0.001114 0.003216 0 0.020767

最佳答案

您可以尝试用分隔符'_'连接LS_IDUPPER_BOUND列,构造交叉表(假设构造列中的所有元素并且 'VEHICLE_HASH' 列是唯一的),并用零填充 NaN 值:

import pandas as pd
import numpy as np

df = pd.DataFrame() # here should be your initial dataframe
df['ID_AND_BOUND'] = df['LS_ID'] + '_' + df['UPPER_BOUND'].astype(str)
df_processed = pd.crosstab(index=df['VEHICLE_HASH'],
columns=df['ID_AND_BOUND'],
values=df['LS_RATIO'],
aggfunc=np.mean)
df_processed = df_processed.reset_index().fillna(0)

关于python - 在Python中有效地将稀疏数据帧转换为密集数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46683315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com