我试图使用np.where来计算基于其他条件的列内部。 我想修改else条件。 我还得用** df1['matches'].fillna('0]',inplace=True)**否则它给出了不同的错误
代码:
df1 = pd.read_csv('one.txt',sep = '\t')
df1['matches'].fillna('[0]',inplace = True)
df1['scorehigh?'] = df1['league'].apply(lambda a: 'yes' if a == 'Active' or a == 'Super Active' else 'no')
df1['greaterthan10?'] = (['yes' if any(int(a)>10 for a in i) else 'no'
for i in df1['matches'].str.findall('\d+')])
m=np.where((df1['scorehigh?']=='yes')) & (df1['matches'] != '[0]')
df1['Finals?'] = np.where((df1['scorehigh?']=='yes') & (df1['greaterthan10?'] == 'yes'), 'YES', m)
a=df1['Finals?'].value_counts()
print(a)
错误:
setting an array element with a sequence.
输入:
league matches
Active [[1, 0, 50,], [2, 0, 14,]]
Active [[1, 0, 0,], [2, 0, 4,]]
Active [[1, 0, 50,], [2, 0, 14,]]
Super Active [[1, 0, 50,], [2, 0, 14,]]
Low [[1, 0, 50,], [2, 0, 14,]]
Low [[1, 0, 5,], [2, 0, 5,]]
Low [[1, 0, 40,], [2, 0, 10,]]
Super Active
Super Active
Super Active
Super
Low
预期产出:
league matches greater_than_10?
Active [[1, 0, 50,], [2, 0, 14,]] yes
Active [[1, 0, 0,], [2, 0, 4,]] no
Active [[1, 0, 50,], [2, 0, 14,]] yes
Super Active [[1, 0, 50,], [2, 0, 14,]] yes
Low [[1, 0, 50,], [2, 0, 14,]] no
Low [[1, 0, 5,], [2, 0, 5,]] no
Low [[1, 0, 40,], [2, 0, 10,]] no
Super Active [0] no
Super Active [0] no
Super Active [0] no
Super [0] no
Low [0] no
使用值后应为。计数:
Yes: 3
No: 4
问题在于:
如果掩码输出后没有参数,则为匹配值的位置数组
如果不匹配,请将嵌套的^{} 与指定的
None
一起使用,对于第二个掩码也是仅使用df1['matches'] != '[0]'
:或^{} :
如果使用,两个条件输出不同:
相关问题 更多 >
编程相关推荐