当前位置: 首页 > 知识库问答 >
问题:

将具有列表值的熊猫系列转换为布尔数据帧

云鸿达
2023-03-14

我有一系列不同元素的值。值计数显示如下。

category                                                                            count
[Radiometric]                                                                       76
[Ozone]                                                                             59
[Aerosol]                                                                           53
[Cryosphere]                                                                        31
[Atmospheric State, Cloud Properties]                                               29
[Atmospheric State, Radiometric, Surface Properties]                                 8
[POPs]                                                                               8
[Atmospheric State, Cloud Properties, Radiometric]                                   7

我想为每个类别创建列,并为每一行标记True/False。

e. g.

index                Aerosol    Cloud Properities     Radiometric  ......
1                     TRUE       FALSE                  TRUE
2                     FALSE       TRUE                   TRUE
3
4

我设法从所有项目中获取了这些类别的唯一列表。我还可以通过在此处的解决方案中给出的方法将其制作成单独的列。

但在我的情况下,数据是不完整的/变化的,因此给我一个DF,如下所示

    1                   2                   3                 4                 5
25  Reactive Gas        Surface Properties  None               None             None
28  Aerosol             Ozone               Atmospheric State Cloud Properties  None
59  Surface Properties  Cryosphere          None               None             None
68  Atmospheric State   Cloud Properties    None               None             None
73  Atmospheric State   Radiometric         None               None             None

有没有办法使用熊猫或其他python工具将其转换为所需的输出。我现在正在使用pandas.pivot_table这个解决方案的提示。我使用第1列作为列(假设它具有所有类别),但为每列提供了一个多索引DF。

pvt = tmp.pivot_table(index=tmp.index,columns="1",aggfunc="count")

需要帮助我如何才能得到上面提到的布尔矩阵/df。

共有1个答案

夔光霁
2023-03-14

我想你需要< code>Series.str.join与< code > series . str . get _ dummies 并转换成boolean:

df1 = df.category.str.join('|').str.get_dummies().astype(bool)

或者使用< code > multilabeldirizer :

from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
df = pd.DataFrame(mlb.fit_transform(df.category),columns=mlb.classes_).astype(bool)
 类似资料:
  • 我对熊猫有些陌生。我有一个熊猫数据框,是一行23列。 我想把它转换成一个系列?我想知道做这件事最像蟒蛇的方式是什么? 我试过pd。系列(我的结果),但它抱怨。它还没有聪明到意识到它仍然是数学术语中的“向量”。 谢谢!

  • 我有一个类似下面的系列, 我想根据list(explode)中的值将此单个系列转换为dataframe。 预期产出: 我试过了 我上面的代码可以完成这项工作,尽管我正在寻找解决这个问题的好方法。

  • 我有以下布尔值表: 我想创建一个具有相同索引的新数据帧,但每行都有前一列的前三个 True 列名。 如果一行少于三个真值,则新数据帧将具有空值。

  • 我有一个这样的字典列表: 我想把它变成一个熊猫,如下所示: 注意:列的顺序并不重要。 如何将字典列表转换为如上所示的数据帧?

  • 问题内容: 我对熊猫有些陌生。我有一个熊猫数据框,它是1行乘23列。 我想将其转换为系列吗?我想知道最pythonic的方法是什么? 我试过了,但是抱怨。它不够聪明,无法意识到它仍然是数学上的“向量”。 谢谢! 问题答案: 它不够聪明,无法意识到它仍然是数学上的“向量”。 可以说它足够聪明,可以识别尺寸差异。:-) 我认为您可以做的最简单的事情是使用位置选择该行,这将为您提供一个Series,其列

  • 我有一个字段在熊猫DataFrame被导入为字符串格式。它应该是日期时间变量。如何将其转换为日期时间列,然后根据日期进行筛选。 示例: 数据帧名称:原始数据