用字典替换数据框中的列值时,破折号更改行为

时间:2018-08-08 16:11:41

标签: python-3.x pandas dictionary

我正在尝试用字典中的值替换数据框中的列的值。未修改的列看起来像这样(修剪)

>>> df.Class.head(10)

0    AA-
1    AA+
2    AA
3    BBB-
4    AAA
5    AA-
6    AA
7    A-
8    AA+
9    A+
Name: Class, dtype: object

我的字典如下:

>>> ratingsDict

{'AAA': 'Class AAA',
 'AA+': 'Class AA',
 'AA': 'Class AA',
 'AA−': 'Class AA',
 'A+': 'Class A',
 'A': 'Class A',
 'A−': 'Class A',
 'BBB+': 'Class BBB',
 'BBB': 'Class BBB',
 'BBB−': 'Class BBB',
 'BB+': 'Class BB',
 'BB': 'Class BB',
 'BB−': 'Class BB',
 'B+': 'Class B',
 'B': 'Class B',
 'B−': 'Class B',
 'C': 'Class C'}

通过使用以下代码,我试图将列值替换为字典中的值。

df.Class = df.Class.replace(ratingsDict)

除了以破折号(“-”)结尾的值之外,大多数值都适用。

0    AA-
1    Class AA
2    Class AA
3    BBB-
4    Class AAA
5    AA-
6    Class AA
7    A-
8    Class AA
9    Class A
Name: Class, dtype: object

任何想法可能会发生什么?谢谢。

1 个答案:

答案 0 :(得分:1)

问题在于破折号“-”格式:字典“-”中的破折号与数据帧“-”中的破折号不同。

您使用的.csv文件中的字符可能以不同的格式表示。

直接在代码中创建字典时,破折号格式与数据框中表示的破折号格式相同:“-”。因此,您的代码可以正常工作。