Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复函数以获得正确的计数_Python_Pandas - Fatal编程技术网

Python 如何修复函数以获得正确的计数

Python 如何修复函数以获得正确的计数,python,pandas,Python,Pandas,基于类别,我想使用函数创建一个新类别。然而,当我构建一个函数时,它没有得到正确的计数。我已经创建了一个示例数据供参考。请查看以下代码: 创建用于引用的数据帧 统计 ##使用函数调整类别 def newcat(x,y): if x=="high": return "High_Risky" elif x=="medium" and y=="yes": return &quo

基于类别,我想使用函数创建一个新类别。然而,当我构建一个函数时,它没有得到正确的计数。我已经创建了一个示例数据供参考。请查看以下代码:

创建用于引用的数据帧 统计 ##使用函数调整类别

def newcat(x,y):
    if x=="high":
        return "High_Risky"
    elif x=="medium" and y=="yes":
        return "Medium_Risky"
    elif x=="Low" and x=="others":
        return "Low_Risky"

df['overdue_flag']=df.apply(lambda x:newcat(x['category'],x['overdue']),axis=1)
你可以试试这个:

将熊猫作为pd导入
df=pd.DataFrame({
“供应商”:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],
“逾期”:[“是”、“否”、“是”、“否”、“是”、“否”、“是”、“否”、“否”、“是”、“否”、“否”、“否”、“否”、“否”、“是”、“否”],
“类别”:[“高”、“中”、“低”、“其他”、“中”、“低”、“低”、“其他”、“高”、“中”、“低”、“其他”、“中”、“低”、“其他”、“中”、“低”、“其他”]
})
def新_cat(df):
#创建默认值为“低风险”的新列“过期标志”
df.loc[:,“过期标志”]=“低风险”
#应用第一个条件
mask1=df['category']=“高”
df.loc[mask1,‘过期标志’]=“高风险”
#应用第二个条件
mask2=(df['category']==“medium”)&(df['supernate']==“yes”)
df.loc[mask2,‘过期标志’]=“中等风险”
返回df
df=新的_类(df)
打印(df)
#输出
供应商过期类别过期标志
0 1是高高高风险
1 2无中低风险
2 3是低风险
3 4无其他低风险
4 5是中等风险
5.6无低风险
6 7是低风险
7 8无其他低风险
8.9无高风险
9 10是中等风险
10 11无低风险
11 12无其他低风险
12 13无中低风险
13 14是低风险
14 15无其他低风险

如果您有多个
If/else
条件,请使用
np。选择
(矢量化/快速)
只需在
条件列表中提供条件,以及在
选项列表中如何处理该特定条件-

import numpy as np

condlist = [
    (df['category'] == "medium") & (df['overdue'] == "yes"),
    (df['category'] == "high")
]

choicelist = [
    'High_Risky',
    'Medium_Risky'
]


df['overdue_flag'] = np.select(condlist,choicelist)

你对
df['category']的结果做了什么?value_counts()
你希望你的结果
df
是什么样子?当类别
中等且过期
no
时,结果应该是什么?旁白:你最后的
elif
语句总是错误的,因为
x
不能同时是
==“低”
==“其他”
。我想将高风险替换为高风险,将低风险替换为低风险,将中等风险替换为中等风险,将过期时的class='Yes'替换为中等风险设置错误键error:'过期标志'我没有收到任何错误,请参阅我的更新答案。
def newcat(x,y):
    if x=="high":
        return "High_Risky"
    elif x=="medium" and y=="yes":
        return "Medium_Risky"
    elif x=="Low" and x=="others":
        return "Low_Risky"

df['overdue_flag']=df.apply(lambda x:newcat(x['category'],x['overdue']),axis=1)
import numpy as np

condlist = [
    (df['category'] == "medium") & (df['overdue'] == "yes"),
    (df['category'] == "high")
]

choicelist = [
    'High_Risky',
    'Medium_Risky'
]


df['overdue_flag'] = np.select(condlist,choicelist)