python - 如何根据其他列中的值更新数据框单元格值?

标签 python pandas dataframe iteration

我有一个约 2000 行的 pandas 数据框(称为 removedCols),我尝试使用相应单元格中的值来填充数据框中的某些列。原始数据帧的摘录如下:

 A      B      C      D     labels
 0      0      0      0     ['D', 'C']
 0      0      0      0     []
 0      0      0      0     ['A','B','D']
 0      0      0      0     ['D']

我的目标是替换 labels 列中相应列的值。这样我们就得到了,

 A      B      C      D     labels
 0      0      1      1     ['D', 'C']
 0      0      0      0     []
 1      1      0      1     ['A','B','D']
 0      0      0      1     ['D']

我尝试了许多不同的解决方案,例如首先将标签提取到列表中,然后对其进行迭代,或者迭代数据帧的索引。

for i in removedCols.index:
     for value in removedCols.iloc[i]['labels']:
          removedCols.at[i, value] = 1

但是,这些解决方案似乎提供了 0 和 1 的随机组合 - 并且与 labels 列中给出的内容并不完全匹配。

更新:仔细检查您的索引。

最佳答案

使用DataFrame.updateSeries.str.joinSeries.str.get_dummies :

import ast
#if necessary
#df['labels'] = df['labels'].apply(ast.literal_eval)

df.update(df['labels'].str.join('|').str.get_dummies())
print (df)

   A  B  C  D     labels
0  0  0  1  1     [D, C]
1  0  0  0  0         []
2  1  1  0  1  [A, B, D]
3  0  0  0  1        [D]

关于python - 如何根据其他列中的值更新数据框单元格值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72893843/

相关文章:

python - 用于将 3d 数组展平为 pandas df 的内置函数?

python - 如何更改堆积的 pyplot 图表的列颜色以指示另一列是真还是假?

python - Pandas 试图通过获取某些字符串之间的行来转换数据框

python - Pandas 将行数据转换为表格形式

python - 在 Pandas 中按不规则组分割数据框

apache-spark - 在虚拟机的 ubuntu 下的 jupyter 中使用 pyspark 时,pandas 功能不起作用

Python将时间转换为UTC格式

python - 按线型对线进行分组

python - Django - 如何在事件前 5 天发送邮件?

python - 使用gabor内核提取垂直线会产生黑色图像