将函数结果追加到datafram

2024-09-28 01:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python中将依赖于循环的值赋给数据帧。你知道吗

我有以下起始数据帧:

thres = 0.1
d = { 'T': [0.], 'TN': [0], 'FN': [0], 'FP':[0], 'TP':[0]}
dataframef = pd.DataFrame(data=d)

我的开始变量是thres。你知道吗

现在我进入我的循环:

while thres <= 0.4:
    a = { 'T': [0], 'TN': [0], 'FN': [0], 'FP':[0], 'TP':[0]}
    dataframe = pd.DataFrame(data=a)
    y_pred = predictionthreshold(RandomForestClassifier(random_state=42), thres)
    tn, fp, fn, tp = confusion_matrix(y_test.ravel(), y_pred).ravel()
    dataframe.loc[0]['T'] = thres
    dataframe.loc[0]['TN'] = tn
    dataframe.loc[0]['FP'] = fp
    dataframe.loc[0]['FN'] = fn
    dataframe.loc[0]['TP'] = tp    
    dataframef = dataframef.append(dataframe, ignore_index=True)
    thres=thres+0.1

我的结果是:

    T   TN  FN  FP  TP
0   0.0     0   0   0   0
1   0.0     0   0   0   0
2   0.0     0   0   0   0
3   0.0     0   0   0   0
4   0.0     0   0   0   0

我期望一些东西,一步一步地填充数据帧:

    T   TN  FN  FP  TP
0   0.1     1   0   0   0
1   0.2     0   3   0   0
2   0.3     0   0   2   0
3   0.4     0   0   0   0
4   0.5     0   4   0   4 

其中的错误在哪里?有没有优雅的方法来避免循环?你知道吗


Tags: 数据dataframedataloctnfnpdfp
1条回答
网友
1楼 · 发布于 2024-09-28 01:25:42

按以下方式更改分配:

dataframe.loc[0,'T'] = thres
dataframe.loc[0,'TN'] = tn
dataframe.loc[0,'FP'] = fp
dataframe.loc[0,'FN'] = fn
dataframe.loc[0,'TP'] = tp 

使用dataframe.loc[0]['TP'] = tp时,将tp分配给副本,而不是原始数据帧。有关详细信息,请参见Returning a view versus a copy。你知道吗

相关问题 更多 >

    热门问题