python - 数据框:coll 中数组的 get_dummies

标签 python pandas dataframe

使用 Python/Pandas

我有一个非常简单的 csv 文件,除了一列:源是一个数组。

我的表格示例:

Column A                  |Column B  |Column C  |Column D  |  
__________________________|__________|__________|__________|
[Water, Food, Groceries]  |  0       |true      |9         |
[Water, Desert, Sand]     |  1       |false     |1         |
[Earth, Groceries]        |  2       |null      |12        |
[Air, Food, Car]          |  3       |true      |8         |
[Cristal, Love, Groceries]|  4       |false     |0         |

我想要实现的目标:

Column B  |Column C  |Column D  |column_a_water |column_a_food  | column_a_groceries |
__________|__________|__________|_______________|_______________|____________________|
  0       |true      |9         |  1            |  1            |  1                 |
  1       |false     |1         |  1            |  0            |  0                 |
  2       |null      |12        |  0            |  0            |  1                 |
  3       |true      |8         |  0            |  1            |  0                 |
  4       |false     |0         |  0            |  0            |  1                 |

使用 pandas get_dummies,我可以使其与 C 列一起工作,但不能与 A 列一起工作。使用相同的技术,它不起作用。

遇到这种情况我该怎么办?

最佳答案

使用,Series.explodeA 列上,然后使用 Series.str.get_dummies在此分解列上,然后使用 DataFrame.sumlevel=0 上,然后使用 DataFrame.add_prefix将前缀 Column A 添加到每个虚拟列,最后使用 DataFrame.join将原始数据帧与包含虚拟列的数据帧连接起来:

# Use this line IF the values in Column A are type of `string` instead of lists.
df['Column A'] = df['Column A'].str.strip('[]').str.split('\s*,\s*')

df1 = (
    df['Column A'].explode()
    .str.get_dummies().sum(level=0).add_prefix('Column A_')
)

df1 = df.drop('Column A', 1).join(df1)

结果:

# print(df1)

   Column B Column C  Column D  Column A_Air  ...  Column A_Groceries  Column A_Love  Column A_Sand  Column A_Water
0         0     True         9             0  ...                   1              0              0               1
1         1    False         1             0  ...                   0              0              1               1
2         2      NaN        12             0  ...                   1              0              0               0
3         3     True         8             1  ...                   0              0              0               0
4         4    False         0             0  ...                   1              1              0               0

关于python - 数据框:coll 中数组的 get_dummies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62600525/

相关文章:

python - Pickle序列化顺序之谜

python - NCHW和NHWC网络格式转换Tensorflow模型

python - Pandas:将 Lambda 应用于多个数据帧

python - pandas 中的 GroupBy 按日期范围划分

python - 如何在 pandas 数据框中的一组行上执行一个函数?

python - 在 python-pbkdf2 中验证 PBKDF2 密码哈希

python - OpenCV - 在捕获循环中没有 waitkey 不显示图像

python - 将功能应用于 Pandas groupby

python - 将df中的许多列减去另一df中的一列

python - 根据特定条件从列中减去值并获取新的 DataFrame