我有带有文件名和分类的数据帧,这些是来自网络的预测,我想将它们映射为整数,以评估网络的预测。
我的数据帧是:
Filename: Class:
GHT347 Europe
GHT568 lONDON
GHT78 Europe
HJU US
HJI lONDON
HJK US
KLO Europe
KLU lONDON
KLP lONDON
KLY1 lONDON
KL34 US
真正的预测应该是:
GHT——欧洲HJU--我们KL——伦敦
我想通过添加额外的两列预测和实际来映射:GHT和欧洲到1,美国和HJ到0,KL和伦敦到2
Actual Prediction
1 1
1 2
pandas str.startswith方法返回true或false,这里我需要三个值。有人能给我指路吗?
我不能完全理解你想要什么,但我可以给你一些提示
使用正则表达式:
df['actual'] = np.nan
df.loc[(df.Filename.str.contains('^GHT.*')) & (df.Class == 'Europe'), 'Actual'] = 1
df.loc[(df.Filename.str.contains('^HJ.*')) & (df.Class == 'US'), 'Actual'] = 0
等等
您可以根据一个或多个其他列的值将列值设置为任何您喜欢的值。这个玩具示例展示了一种方法:
row1list = ['GHT347', 'Europe']
row2list = ['GHT568', 'lONDON']
row3list = ['KLU', 'lONDON']
df = pd.DataFrame([row1list, row2list, row3list],
columns=['Filename', 'Class'])
df['Actual'] = -1 # start with a value you will ignore
df['Prediction'] = -1
df.loc[(df['Filename'].str.startswith('GHT')) & (df['Class'] == 'Europe'), 'Actual'] = 1
df.loc[(df['Filename'].str.startswith('KL')) & (df['Class'] == 'lONDON'), 'Prediction'] = 2
print(df)
# Filename Class Actual Prediction
# 0 GHT347 Europe 1 -1
# 1 GHT568 lONDON -1 -1
# 2 KLU lONDON -1 2