python - 满足条件时,使列行与另一列的匹配值具有相同的值
问题描述
我有一个如下所示的数据框
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'C', 'D', 'D'],
'col2': [1,0,1,0,0,1]})
col1 | col2 |
---|---|
一个 | 1 |
一个 | 0 |
乙 | 1 |
C | 0 |
D | 0 |
D | 1 |
如果 col2 = 1 中有一行,我想让所有 col2 行 = 1 以获得相同的值 col1 值。我想要的表格如下:
col1 | col2 |
---|---|
一个 | 1 |
一个 | 1 |
乙 | 1 |
C | 0 |
D | 1 |
D | 1 |
任何帮助深表感谢!
解决方案
您可以分两步将其分块:
获取 col2 为 1 的行:
filters = df.loc[df.col2.eq(1), 'col1']
将新值分配给 col1 所在的行filters
:
df.loc[df.col1.isin(filters), 'col2'] = 1
df
col1 col2
0 A 1
1 A 1
2 B 1
3 C 0
4 D 1
5 D 1
推荐阅读
- python - 通过 jinja 变量发送和渲染 HTML 语法
- set - Z3:如何办理协会或会员资格?
- sqldatatypes - 关于 TDengine 支持的数据类型
- xamarin - MAUI Preview 9 使用 ObservableCollection 中断 CollectionView 更新?
- android-fragments - Kotlin Fragment RecyclerView Adapter ...试图使 ItemClickOnListener 工作
- version - epplus 和提供已签名的库
- flutter - Flutter 中的标签栏
- logstash - 如何在 Logstach 中解析此日志
- asp.net - 未发布的连接服务
- dataframe - 使用 DataFrames.jl 时通过与以前的行进行比较来过滤/选择行?