Python 如果值为1,则更改整行的PandasDF值
我有一个(非常)大的pd.DataFrame,它包含真/假或1/0,如果工作结果需要,我可以更改它 如果一行中的值是1,我希望该行的其余部分都用1填充 输入如下所示:Python 如果值为1,则更改整行的PandasDF值,python,pandas,Python,Pandas,我有一个(非常)大的pd.DataFrame,它包含真/假或1/0,如果工作结果需要,我可以更改它 如果一行中的值是1,我希望该行的其余部分都用1填充 输入如下所示: Index Day1 Day2 Day3 Day4 1 0 1 0 0 2 1 1 0 0 3 0 0 0 0 Index Day1 Day2 Day3
Index Day1 Day2 Day3 Day4
1 0 1 0 0
2 1 1 0 0
3 0 0 0 0
Index Day1 Day2 Day3 Day4
1 0 1 1 1
2 1 1 1 1
3 0 0 0 0
我期望的目标是如下所示:
Index Day1 Day2 Day3 Day4
1 0 1 0 0
2 1 1 0 0
3 0 0 0 0
Index Day1 Day2 Day3 Day4
1 0 1 1 1
2 1 1 1 1
3 0 0 0 0
可以迭代所有行并“手动”更改值,但我想知道是否有更好的解决方案
谢谢大家! 假设列的数量相当小,我将迭代这些列:
for col in reversed(df.columns[1:-1]):
df.loc[df[col]==1, col:] = 1
正如预期的那样:
Index Day1 Day2 Day3 Day4
0 1 0 1 1 1
1 2 1 1 1 1
2 3 0 0 0 0
使用,如果大于,则进行比较,如0
,并通过以下方式将掩码转换为0,1
值:
使用Dataframe.transform()方法。检查行中的成员资格并替换
df.transform(lambda row: [1]*4 if 1 in row.values else row, axis=1)
谢谢你的回答,但我使用了耶斯雷尔的解决方案。谢谢你的回答,我有大量的专栏,因此耶斯雷尔的答案更容易为我申请。