【发布时间】:2021-03-26 09:10:19
【问题描述】:
我有一个包含两列的数据框,如下所示:
GebTyp BAK
0 RH C
1 MFH A
2 RH J
3 RH F
4 RH K
... ... ..
25046 MFH C
25047 MFH G
25048 MFH I
25049 MFH A
25050 MFH B
还有一个为这两列的每一对提供值。
BAK EFH/DHH RH MFH GMH HH
0 A 231.0 222.0 265.0 186.0 156.0
1 B 271.0 222.0 204.0 186.0 156.0
2 C 214.0 186.0 222.0 197.0 167.0
3 D 242.0 183.0 236.0 201.0 171.0
4 E 184.0 155.0 188.0 196.0 143.0
5 F 198.0 179.0 162.0 158.0 121.0
6 G 134.0 145.0 138.0 134.0 104.0
7 H 159.0 118.0 143.0 103.0 73.0
8 I 120.0 110.0 119.0 97.0 87.0
9 J 91.0 89.0 86.0 75.0 69.0
10 K NaN NaN NaN NaN NaN
11 L NaN NaN NaN NaN NaN
我可以像这样使用numpy.select 正确分配每个单独的值:
def GWB()
conditions = [
(mc["BAK"] == "A" & mc["GebTyp"] == "EFH/DHH"),
(mc["BAK"] == "A" & mc["GebTyp"] == "RH"),
(mc["BAK"] == "A" & mc["GebTyp"] == "MFH"),
(mc["BAK"] == "A" & mc["GebTyp"] == "GMH"),
(mc["BAK"] == "A" & mc["GebTyp"] == "HH"),
]
values = [
(231),
(222),
(265).
(186),
(156)
]
df["result"] = np.select(conditions,values)
GWB()
但这会产生大约 80 行代码,在这种情况下,我也只使用第一个数据帧,手动分配值。我想知道是否有更快/更短的方法来完成这项任务?
【问题讨论】:
标签: pandas dataframe numpy select