python代替vlookup_用字典替换熊猫中的VLookup(然后替换)?

该博客介绍了如何使用Python和Pandas数据帧来替代Excel中的VLOOKUP功能。作者通过创建一个字典,将'champId'转换为'champNum',并将结果保存到新的CSV文件中。然而,在尝试从'champNum.csv'读取数据时,遇到了ValueError,因为文件名被误解释为整数。
摘要由CSDN通过智能技术生成

我想用字典替换Pandas数据帧中的值

DataFrame=games-u-q-s.csv:blue1 blue2 blue3 blue4 blue5 red1 red2 red3 red4 red5 winner

8 432 96 11 112 104 498 122 238 412 0

119 39 76 10 35 54 25 120 157 92 0

57 63 29 61 36 90 19 412 92 22 0

第1-10列包含champId,其中winner列作为标签

字典=冠军.csv在

^{pr2}$

并将其另存为dataset_feature_champion_number.csv

我想将champId转换为champNum,并将预期输出如下:blue1 blue2 blue3 blue4 blue5 red1 red2 red3 red4 red5 winner

125 11 59 70 124 36 129 20 135 111 0

23 40 77 53 95 67 73 37 132 91 0

69 13 116 81 22 68 127 111 91 8 0

代码如下:import csv

import os

import numpy as np

import pandas as pd

def createDictionary(csvfile):

with open(csvfile, mode='r') as data:

reader = csv.reader(data)

dict = {int(rows[0]):int(rows[1]) for rows in reader}

return dict

def convertDataframeToChampNum(csvfile,dictionary):

df = pd.read_csv(csvfile)

temp1 = df.iloc[:,1:11]

temp2 = df['winner']

temp3 = temp1.applymap(dictionary.get)

champNum = temp3.join(temp2)

return champNum

def saveAsCSV(dataframe):

dataframe.to_csv("dataset_feature_champion_number.csv")

def main():

diction = createDictionary("champNum.csv")

dataset = convertDataframeToChampNum("games-u-q-s.csv",diction)

saveAsCSV(dataset)

if __name__ =='__main__':

main()

我犯了很多错误:---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

in ()

27

28 if __name__ =='__main__':

---> 29 main()

in main()

22

23 def main():

---> 24 diction = createDictionary("champNum.csv")

25 dataset = convertDataframeToChampNum("games-u-q-s.csv",diction)

26 saveAsCSV(dataset)

in createDictionary(csvfile)

7 with open(csvfile, mode='r') as data:

8 reader = csv.reader(data)

----> 9 dict = {int(rows[0]):int(rows[1]) for rows in reader}

10 return dict

11

in (.0)

7 with open(csvfile, mode='r') as data:

8 reader = csv.reader(data)

----> 9 dict = {int(rows[0]):int(rows[1]) for rows in reader}

10 return dict

11

ValueError: invalid literal for int() with base 10: 'champNum'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值