【发布时间】:2019-05-17 05:48:26
【问题描述】:
我有一个如下所示的数据框。
我检查 score1,2,3 列并打印相应的主题。我可以比较 2 列并打印相应的文本。
如何包含不同的列?
import pandas as pd
import numpy as np
raw_data = {'Sub1':['A','B','C','D','E'],
'Sub2':['F','G','H','I','J'],
'Sub3':['K','L','M','N','O'],
'S_score1': [1, 0, 0, 6,0],
'F_score1' : [0, 1,0,0,0],
'L_score1' : [1,2,3,0,4],
'S_score2': [0, 0, 0, 6,0],
'F_score2' : [0, 1,0,0,0],
'L_score2' : [1,2,3,0,4],
'S_score3': [0, 0, 0, 6,0],
'F_score3' : [0, 1,0,0,0],
'L_score3' : [1,2,3,0,4]}
df2 = pd.DataFrame(raw_data, columns = ['Sub1','Sub2','Sub3','S_score1', 'F_score1','L_score1','S_score2', 'F_score2','L_score2','S_score3', 'F_score3','L_score3'])
def S_text(f):
s_text = "You have scored on {}" .format(f['Sub1']) if f['S_score1'] >= 1 else "You have scored on {}" .format(f['Sub2'])
return s_text
def F_text(f):
f_text = "You have scored on {}" .format(f['Sub1']) if f['F_score1'] >= 1 else "You have scored on {}" .format(f['Sub2'])
return f_text
def L_text(f):
l_text = "You have scored on {}" .format(f['Sub1']) if f['L_score1'] >= 1 else "You have scored on {}" .format(f['Sub2'])
return l_text
df2['s_text'] = df2.apply(S_text, axis=1)
df2['f_text'] = df2.apply(F_text, axis=1)
df2['l_text'] = df2.apply(L_text, axis=1)
我看起来像下面的类型比较,但这给出了错误。 基本上我想要如果 2 列满足条件(分数> = 1)我想打印 2 个相应的主题。如果 3 列满足条件(分数>=1)并且我想在文本中打印 3 个主题,如下所示 2 个条件。有没有其他方法可以比较 3 列并打印文本。
def S_text(f):
s_text = "You have scored on {}" .format(f['Sub1']) if f['S_score1'] >= 1
elif f['S_score2'] >= 1 "You have scored on {}" .format(f['Sub2'])
elif f['S_score3'] >=1 "You have scored on {}" .format(f['Sub3'])
elif f['S_score1'] >=1 and f['S_score2']>=1 "You have scored on {} {}" .format(f['Sub1'], f['Sub2'])
elif f['S_score1'] >=1 and f['S_score3']>=1 "You have scored on {} {}" .format(f['Sub1'], f['Sub3'])
elif f['S_score2'] >=1 and f['S_score3']>=1 "You have scored on {} {}" .format(f['Sub2'], f['Sub3'])
elif f['S_score1'] >=1 and f['S_score2']>=1 and f['S_score3']>=1 "You have scored on {} {} {}" .format(f['Sub1'],f['Sub2'], f['Sub3'])
return s_text
想要的输出:
【问题讨论】:
-
为什么要标记 python2 和 3?您是否同时使用?您的问题是否与处理一个问题有关,而不是另一个问题,您需要同时处理这两个问题吗?
-
任何版本都适合我。这就是我标记两个版本的原因。
-
我有未标记的 2.7 版本。谢谢
-
这里的逻辑不清楚,你能解释一下吗?
-
预期输出是什么?
标签: python python-3.x pandas