如果标签在不同的数据帧中,如何将元素替换为属于类标签的概率



我有一个pandas DataFrame X_train,它包含一个具有不同(重复(状态名称的列"state"。在另一个Y_train DataFrame中,我的类值为0-1。在字典变量Temp I中,每个状态(唯一(都属于类0和类1的概率。现在我想将X_train中的所有状态名替换为它们的概率分数对应于Y_train中类标签怎么做?

解决方案:

您描述的数据:

import pandas as pd
X_train = pd.DataFrame([{'state': 'A'}, {'state': 'B'}, {'state': 'A'},{'state': 'A'}])
Y_train = pd.DataFrame([{'class': 1}, {'class': 0}, {'class': 1}, {'class': 1}])
Temp = {'A': {0: 0.75, 1: 0.25}, 'B': {0: 0.20, 1:0.8}}

使用concat按列组合两个数据帧,如下所示:

combined = pd.concat([X_train, Y_train], axis=1)

其中轴=1表示您希望按列进行组合

现在运行一个双循环来分配新值

for classname in combined['class'].unique():
for state in combined['state'].unique():
combined.loc[combined['class'] == classname, 'class'] = Temp[state][classname]

你最终会得到一个像这样的组合:

state  class
0     A   0.25
1     B   0.75
2     A   0.25
3     A   0.25

然后再次拆分你的数据帧

X_train = combined[['state']]
Y_train = combined[['class']]

最新更新