打个比方,一个班有很多学生(每个学生都学了很多门课),现在我想知道每个学生(语文/数学)的值。同时,若学生没有语文成绩。也把这个学生的数学成绩输出来。
可用遍历方法去解,参考例子:
import pandas as pd
df=pd.DataFrame({'students':[1,2,3,4,5,6],'subjects':[['chinese','math','physics'],['PE','chinese','chemistry'],['math','french'],['chinese','math'],['computer','finance'],['math']],'score':[[86,78,66],[74,58,87],[85,69],[79,63],[56,58],[81]]})
res=[]
for i in range(len(df)):
if 'math' in df['subjects'][i] and 'chinese' in df['subjects'][i]:
res.append(df['score'][i][df['subjects'][i].index('chinese')] /
df['score'][i][df['subjects'][i].index('math')])
elif 'math' in df['subjects'][i] and 'chinese' not in df['subjects'][i]:
res.append(df['score'][i][df['subjects'][i].index('math')])
else:
res.append(None)
print(res)
运行结果:
[1.1025641025641026, None, 85, 1.253968253968254, None, 81]