【发布时间】:2021-12-14 20:17:12
【问题描述】:
我有以下字典和数据框:
val_dict = {
'key1': ['val1', 'val2', 'val3'],
'key2': ['val4', 'val5']
}
df = pd.DataFrame(data={'val5': [True, False, False],
'val2': [False, True, False],
'val3': [True, True, False],
'val1': [True, False, True],
'val4': [True, True, False],
'val6': [False, False, True]},
index=pd.Series([1, 2, 3], name='index'))
| index | val5 | val2 | val3 | val1 | val4 | val6 |
|---|---|---|---|---|---|---|
| 1 | True | False | True | True | True | False |
| 2 | False | True | True | False | True | False |
| 3 | False | False | False | True | False | True |
如何从左侧遍历数据框,以便如果列是 True,val_dict 值中的其他列将变为 False?
| index | val5 | val2 | val3 | val1 | val4 | val6 |
|---|---|---|---|---|---|---|
| 1 | True | False | True | FALSE | FALSE | False |
| 2 | False | True | FALSE | False | True | False |
| 3 | False | False | False | True | False | True |
例如,索引 1 具有 val5 和 True,因此 val4 切换到 False,因为它们都分配给相同的 val_dict 键。同样,val2 是 False,但 val3 是 True,所以 val1 变成了 False。请注意,它应该跳过val6。
我尝试将df 转换为带有df.to_dict('index') 的字典以使用两个字典。但是,字典是无序的,并且列的顺序很重要,所以我认为这可能会使代码出错。
【问题讨论】:
-
3.6 版的字典是有序的
-
如果我们要使用两个字典,这将如何实现?
-
如果一行的所有 val 都为 False,是否应该将第一个设置为 True?
-
如果一行的所有 val 都是
False,则该行应保持为 false
标签: pandas dataframe dictionary