python - 将包含 pandas Series 的列转换为特征

标签 python pandas dataframe series

<分区>

我的数据框如下:

            a
0     [8, 10]
1  [12, 7, 9]

如您所见,a 列包含一个列表。该列表中的数字在我们的域中有意义,我想将它们用作功能。我的预期输出如下:

   Tag_7  Tag_8  Tag_9  Tag_10  Tag_12
0      0      1      0       1       0
1      1      0      1       0       1

我使用了一些从互联网上找到的方法,它们满足了我的期望,但这些方法存在执行时间问题。其中之一如下:

pd.get_dummies(df.a.apply(pd.Series).stack().astype(int), prefix='Tag').sum(level=0)

我认为这种方法对小数据集很有用。就我而言,它没有用。我需要帮助。 提前致谢。祝你有个愉快的一天

最佳答案

试试 scikit-learn 看看它是否有帮助

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
cols = np.unique(np.concatenate(df.a))
df_final = pd.DataFrame(mlb.fit_transform(df.a), columns=cols).add_prefix('T_')

Out[213]:
   T_7  T_8  T_9  T_10  T_12
0    0    1    0     1     0
1    1    0    1     0     1

如果你需要压缩每 ms,使用 chain.from_iterablenp.concatenate 和使用 np.char 更快.addT_ 到列名

from sklearn.preprocessing import MultiLabelBinarizer
from itertools import chain

mlb = MultiLabelBinarizer()
cols = np.char.add('T_', np.unique(list(chain.from_iterable(df.a))).astype(str))
df_final = pd.DataFrame(mlb.fit_transform(df.a), columns=cols)

关于python - 将包含 pandas Series 的列转换为特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60523562/

相关文章:

python - Django-如何将 'autonumber' 列添加到 View 创建的表中?

python - 在 pandas 数据框中添加错误日志消息行

python - 如何将 django 查询集从模型方法返回到模板?

python - 将 JSON 对象列表转换为 Django 模型实例

python - 如何自动清除python中的变量?

python - 在Python中使用panda读取文件时忽略空DataFrame

python - 在Python中创建一个Excel表格

python - 从列中提取数字以在 Pandas 中创建新列

python - 获取列名列表所有值在 Python 中都是 NaN

python - 在 OpenCV 中实现 Photoshop 高通滤波器 (HPF)