【发布时间】:2020-08-24 08:38:33
【问题描述】:
我是 pandas 和 python 的新手,我搜索过但找不到我的问题。我正在尝试根据另一列“NO”的内容,找到在 Pandas 数据框“Sample Location”中填充新列的最佳方法,将它们放入定义的集合中。
第一个问题是:
if TestLocation == 'LH Duct':
df['Sample Location'] = df.apply(
lambda x: samplePoint(x['NO']),
axis=1
)
我不确定是否正确形成,因为我的数据框有点混乱。
第二个问题 - 有没有更 Pythonic 的方式来做这个检查:
def samplePoint(n):
if n <= 15:
v = 'P1 S1'
elif n >= 20 & n <= 35:
v = 'P1 S2'
elif n >= 40 & n <= 55:
v = 'P1 S3'
elif n >= 60 & n <= 75:
v = 'P1 S4'
elif n >= 80 & n <= 95:
v = 'P1 S5'
elif n >= 100 & n <= 115:
v = 'P1 S6'
elif n >= 150 & n <= 165:
v = 'P2 S1'
elif n >= 170 & n <= 185:
v = 'P2 S2'
elif n >= 190 & n <= 205:
v = 'P2 S3'
elif n >= 210 & n <= 225:
v = 'P2 S4'
elif n >= 230 & n <= 245:
v = 'P2 S5'
elif n >= 250 & n <= 265:
v = 'P2 S6'
else:
v = 'null'
return v
我认为整个事情可以/应该作为一个 apply/lambda 来完成,但我有点迷失了。如果有人能解释这一点或给我一个好的链接,我将永远感激不尽!
【问题讨论】:
-
看看可能使用字典列表,在其中定义 v 描述符的低值和高值,例如:'score = [{“low”=0, “high”=15, “v ”=“p1 s1”},{“低”=20,“高”=35,“v”=“p1 s2”},]'。现在,当您获得分数 n 时,您可以在列表中查看要选择的 dict。
标签: python pandas dataframe nested-if