Avi*_*ton 1 python dataframe pandas
我有以下函数,它从pandas dataframe列获取值并提供参数(s0_loc,s1_loc,.. upto ..,s12_loc,当且仅当它们各自的s0,s1,s2 ...,s12不为空时)到另一个功能.另外,当且仅当s0不为空时,它将检查s1是否为空...类似地,它将检查s2是否为空,如果是s0,则s1不为空.所以...
根据以上标准,我写了以下功能.但它的功能很长......我想减少这个函数中的代码片段.
def compare_locality(p,p_loc,s0,s0_loc,s1,s1_loc,s2,s2_loc,s3,s3_loc,s4,s4_loc,s5,s5_loc,s6,s6_loc,s7,s7_loc,s8,s8_loc,s9,s9_loc,s10,s10_loc,s11,s11_loc,s12,s12_loc):
loc = []
if s0 != '' :
loc.append(s0_loc)
if s1 != '' :
loc.append(s1_loc)
if s2 != '' :
loc.append(s2_loc)
if s3 != '' :
loc.append(s3_loc)
if s4 != '' :
loc.append(s4_loc)
if s5 != '' :
loc.append(s5_loc)
if s6 != '' :
loc.append(s6_loc)
if s7 != '' :
loc.append(s7_loc)
if s8 != '' :
loc.append(s8_loc)
if s9 != '' :
loc.append(s9_loc)
if s10 != '' :
loc.append(s10_loc)
if s11 != '' :
loc.append(s11_loc)
if s12 != '' :
loc.append(s12_loc)
if len(loc) == 0:
return ''
else:
return compare(p_loc,*loc)
Run Code Online (Sandbox Code Playgroud)
我可以得到任何关于如何实现这一点的建议吗?
要使用Sandeep的答案,您可以从巨大的参数列表中在本地构建两个列表:
def compare_locality(p,p_loc,s0,s0_loc,s1,s1_loc,s2,s2_loc,s3,s3_loc,s4,s4_loc,s5,s5_loc,s6,s6_loc,s7,s7_loc,s8,s8_loc,s9,s9_loc,s10,s10_loc,s11,s11_loc,s12,s12_loc):
locs = []
ss = [s0, s1, s2, ..., s12]
s_locs = [s0_loc, ..., s12_loc]
for s, s_loc in zip(ss, s_locs):
if s == '':
break
locs.append(s_loc)
if len(locs) == 0:
return ''
else:
return compare(p_loc,*locs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |