更改列pandas中的类别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改列pandas中的类别?相关的知识,希望对你有一定的参考价值。

我正在试验大熊猫的iter功能。

1-我从熊猫栏目中列出了一份清单。

IN1:

df_area_code_iter = iter(df["Area Code"])
df_area_code_iter_list = list(df_area_code_iter)
df_area_code_iter_list

OUT_1:

['Area 1',
 'Area 2',
 'Area 1',
 ...
 'Area 0']

2-然后我想迭代列表中的元素,用PASS THIS替换Area 0。

IN_2:

new_column = []

for i in df_area_code_iter_list:
    if i == "Area 0":
       i == "PASS THIS"
    new_column.append(i)

new_column

输出2插孔:

['Area 1',
 'Area 2',
 'Area 1',
 ...
 'Area 0']

我知道还有其他方法可以替换列中的值。但是,我想通过将数据帧转换为列表然后迭代元素来弄清楚它。

in_3:

df["Area Code"] = df["Area Code"].replace(to_replace ="Area 0", value = 
"PASS THIS")
df["Area Code"]

OUT_3:

0          Area 1
1          Area 2
2          Area 1
3          Area 1
4       PASS THIS
5       PASS THIS
6       PASS THIS
...     ....

正如我所说,我正在试验,我看不出为什么in_2的for循环不起作用的原因。

答案

主要问题是赋值需要=,而不是相等运算符==

由于循环中的变量i是标量,而不是指向原始列表中元素的引用,因此您不得不追加到新列表。相反,您可以使用enumerate并修改现有列表:

for idx, val in enumerate(df_area_code_iter_list):
    if val == "Area 0":
        df_area_code_iter_list[idx] = "PASS THIS"

或者,更多Pythonic,使用列表理解:

new_list = [x if x != 'Area 0' else 'PASS THIS' for x in df_area_code_iter_list]

以上是关于更改列pandas中的类别?的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas 子集列 x 值基于列 y 中的唯一值

Pandas:更改通过列中的布尔索引选择的值而不会收到警告

如何在 Pandas 数据框中的特定位置插入一列? (更改熊猫数据框中的列顺序)

Python Pandas - 将某些列类型更改为类别

Python pandas:如何在 2 个不同类别之间更改分类值

针对不同类别的其他列 pandas 和 seaborn 或 matplotlib 的 Groupby 逐年绘制