我有一个约 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.update
与 Series.str.join
和 Series.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/