【发布时间】:2022-01-25 21:20:39
【问题描述】:
这是我的数据集:
import pandas as pd
data = {
'xProductNumber': ['0000',
'3505',
'1056',
'3501'],
'xy_0000': [1,
0,
0,
0],
'xy_3613': [0,
0,
0,
0],
'xy_3505': [0,
1,
0,
0],
'xy_3671': [0,
0,
0,
1],
'xy_1056': [1,
0,
1,
0],
'xy_3070': [1,
0,
0,
0],
}
C =('0000', '3505', '1056', '1182')
df = pd.DataFrame(data)
我想做这样的事情:
df.loc[df.apply(lambda x: (x.xProductNumber in C) and (eval('x.xy_'+str(x.xProductNumber)) == 1), axis=1 ) , 'xy_' +str(df['xProductNumber'])] = 11
这将动态更新正确的列 - 而不是添加新列。
输出结果应该是:
| xProductNumber | xy_0000 | xy_3613 | xy_3505 | xy_3671 | xy_1056 | xy_3070 |
|---|---|---|---|---|---|---|
| 0000 | 11 | 0 | 0 | 0 | 1 | 1 |
| 3505 | 0 | 0 | 11 | 0 | 0 | 0 |
| 1056 | 0 | 0 | 0 | 0 | 11 | 0 |
| 3501 | 0 | 0 | 0 | 1 | 0 | 0 |
我尝试了很多组合,但无济于事。 任何帮助将不胜感激!
【问题讨论】: