使用DataFrame时,有没有办法根据列中的值更改单元格的值?
例如,我有一个检查结果的DataFrame,如下所示:
answer_is_a answer_is_c
0 a a
1 b b
2 c c
我想将它们编码为正确(1
)和不正确(0
)。所以它看起来像这样:
answer_is_a answer_is_c
0 1 0
1 0 0
2 0 1
所以我需要迭代整个DataFrame,将单元格中已有的内容与列标题的最后一个字符进行比较,然后更改单元格值。
有什么想法吗?
答案 0 :(得分:2)
默认情况下,DataFrame.apply
会遍历列,将每个列作为一个系列传递给您提供的函数。系列具有name
属性,该属性是我们用来提取答案的字符串。
所以你可以这样做:
from io import StringIO
import pandas
data = StringIO("""\
answer_is_a answer_is_c
a a
b b
c c
""")
x = (
pandas.read_table(data, sep='\s+')
.apply(lambda col: col == col.name.split('_')[-1])
.astype(int)
)
x
打印出来:
answer_is_a answer_is_c
0 1 0
1 0 0
2 0 1