gpt4 book ai didi

python - 按条件重复数据框中的单元格值

转载 作者:行者123 更新时间:2023-11-28 20:55:43 25 4
gpt4 key购买 nike

如下图数据框d1A1对应B1A2对应 B2等。我想根据以下条件更改 B1-3 值:BC = 复制 2 次,D =复制 3 次,作为数据框目标

d1 = DataFrame([{'A1': 'A', 'A2': 'A', 'A3': '', 'B1': '2', 'B2': '2', 'B3': ''},
{'A1': 'A', 'A2': 'C', 'A3': '', 'B1': '2', 'B2': '2', 'B3': ''},
{'A1': 'A', 'A2': 'B', 'A3': 'C', 'B1': '2', 'B2': '4', 'B3': '4'},
{'A1': 'A', 'A2': 'C', 'A3': 'D', 'B1': '2', 'B2': '2', 'B3': '4'}])

d1
A1 A2 A3 B1 B2 B3
0 A A 2 2
1 A C 2 2
2 A B C 2 4 4
3 A C D 2 2 4
target = DataFrame([{'A1': 'A', 'A2': 'A', 'A3': '', 'B1': '2', 'B2': '2', 'B3': ''},
{'A1': 'A', 'A2': 'C', 'A3': '', 'B1': '2', 'B2': '22', 'B3': ''},
{'A1': 'A', 'A2': 'B', 'A3': 'C', 'B1': '2', 'B2': '44', 'B3': '44'},
{'A1': 'A', 'A2': 'C', 'A3': 'D', 'B1': '2', 'B2': '22', 'B3': '444'}])
target

A1 A2 A3 B1 B2 B3
0 A A 2 2
1 A C 2 22
2 A B C 2 44 44
3 A C D 2 22 444

而且我已经尝试使用 np.where 作为 BC 的条件,但它似乎只适用于 B 复制值。有什么方法可以达到吗?

Acol = ['A1','A2','A3']
Bcol = ['B1','B2','B3']
d1[Bcol] = np.where(d1[Acol] == ('B' or 'C'), d1[Bcol]+d1[Bcol], d1[Bcol])
d1

A1 A2 A3 B1 B2 B3
0 A A 2 2
1 A C 2 2
2 A B C 2 44 4
3 A C D 2 2 4

最佳答案

我建议将 A、B、……的乘数条件存储在字典中并像这样应用它:

multiplier_map={'':1,'A':1,'B':2,'C':2,'D':3}
for i in [1,2,3]:
df['B{0}'.format(i)]=df['B{0}'.format(i)]*df['A{0}'.format(i)].map(multiplier_map)

请注意,multiplier_map 还需要包含一个空字符串作为键。

关于python - 按条件重复数据框中的单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56071176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com