python - 如何更改 pandas 数据框列中的每个值?

标签 python pandas

我有这个 pandas 数据框,其中包含一个类型为 int64 的月份列,我想将该列中的每个值更改为一年中相应的季节。

例如,如果 x 是 12、1 或 2 中的任意一个,请将 x 的值更改为 'winter' 等。

我尝试了一些for循环但没有用。我认为有一个衬垫可以使用 lambda x 来完成此操作。

我认为每个月只有 1 个季节,例如冬天是在第 12、1 和 2 个月,依此类推。

例如(0、1、2 是索引):

输入:

0  1
1  3
2  6

输出:

0  winter
1  spring
2  summer

我的问题是 12 个月,否则我可以使用垃圾箱。

有什么想法吗?

最佳答案

一种快速灵活的方法是将字典从当前列值映射到新列值:

d = dict(zip(range(1,13), ["winter"]*2 + ["spring"]*3 + ["summer"]*3 + ["fall"]*3 + ["winter"]))    
df = pd.DataFrame(dict(month=[3,4,6,1,5,6,2,4,5]))

df = df.month.map(d)

输出:

0    spring
1    spring
2    summer
3    winter
4    spring
5    summer
6    winter
7    spring
8    spring
Name: month, dtype: object

关于python - 如何更改 pandas 数据框列中的每个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69501996/

相关文章:

python - 在一般情况下,Python 的 super() 实际上是如何工作的?

python - 有时会出现乱码结果,通过 TCP 套接字将 base64 编码图像从 python 发送到 node.js

python - 如何完全重置警告

python - 从序列中减去数据框(或其唯一的列)

python - 使用 pandas groupby 的结果从列的 pandas cut 日期范围中查询日期

python - 如何在 Pytorch 中为图像及​​其掩模制作自定义数据集?

python - 重用封装在类中的变量和模型

Python re 与上一个捕获组不匹配

python - 删除已交换列值的重复行

python - 新的 pandas 数据框列,其中按条件来自不同数据框的总计(类似于 Excel 的 SUMIFS)