创建一列新的字符串值,该字符串值是根据CSV中另一列的数值行值指定的,返回错误:“KeyError:0”

2024-09-29 01:19:29 发布

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

在Python中使用panda,导入和导出CSV文件

类型列中的数据类型将从原始CSV导入数据帧,数据类型为int64

为了实现这一点,基于原始CSV的Type列中的数值,相应的类型(textstring)将被添加到Newtype列中。此查找将使用字典按以下方式进行:

如果类型等于1,则CSV中的这一“行”将在导出的CSV(代码末尾)中与其相邻的列(名为Newtype)中的同一行中分配文本字符串“NameOne”

import pandas as pd

import csv



df = pd.read_csv("import.csv", names=["A", "B", "Month", "Day", "Time", "Type"])


df['Newtype'] = df['Type']

dictio = {1:'NameOne', 2:'NameTwo', 3:'NameThree', 4:'NameFour', 5:'NameFive'}


df['Newtype'] = df['Newtype'].apply(lambda x: dictio[x])


df.to_csv("export.csv", encoding='utf-8')

但是,运行此代码时返回一个错误,错误为:

KeyError: 0

对于代码中的以下行返回上述错误:

df['Newtype'] = df['Newtype'].apply(lambda x: dictio[x])

我怀疑有问题的代码行如下所示,但我看不出应该如何正确地修改它,有什么建议吗

df['Newtype'] = df['Type']

Tags: csvlambda代码import类型dftype错误
1条回答
网友
1楼 · 发布于 2024-09-29 01:19:29

你把dict命名为dictio,那么我们只需要map这里(或者replace

df['Newtype'] = df['Type'].map(dictio)
#df['Newtype'] = df['Type'].replace(dictio)

相关问题 更多 >