我有一个数据框架,
ip_df:
name class sec details
0 tom I a [{'class':'I','sec':'a','subjects':['numbers','ethics']},{'class':'I','sec':'b','subjects':['numbers','moral-science']},{'class':'I','sec':'c','subjects':['moral-science','ethics']},{'class':'I','subjects':['numbers','ethics1']}]
1 sam I d [{'class':'I','sec':'a','subjects':['numbers','ethics']},{'class':'I','sec':'b','subjects':['numbers','moral-science']},{'class':'I','sec':'c','subjects':['moral-science','ethics']},{'class':'I','subjects':['numbers','ethics1']}] 由此产生的数据框架应该是,
op_df:
name class sec subjects
0 tom I a ['numbers','ethics']
1 sam I d ['numbers','ethics1']"op_df“必须以以下条件为基础,
“value
发布于 2019-11-12 12:33:31
如果需要的话,解决方案首先由next和iter两种条件匹配值来添加默认值[0, 0],如果没有匹配的话:
final = []
for a, b, c in zip(df['class'], df['sec'], df['details']):
out = []
for x in c:
m1 = x['class'] == a
if m1 and x.get('sec') == b:
out.append(x['subjects'])
elif m1 and 'sec' not in list(x.keys()):
out.append(x['subjects'])
final.append(next(iter(out), [0,0]))
df['subjects'] = finalhttps://stackoverflow.com/questions/58818418
复制相似问题