添加一列,该列的值可以是多个不同的值

2024-03-28 14:37:33 发布

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

我正在尝试向pandas数据集中添加一个新列,该数据集从一列中提取数字月份,并将相应的季节存储到新列中。你知道吗

所以本质上

if month == 12, season = 'Winter'
elif month == 2, season = 'Spring'
elif month == 5, season = 'Summer'
else month == 8, season = 'Fall'

我还没有看到一个真正明确的解决办法。我已经了解了如何使用2个条件值,但对pandas和python还是相当陌生的。你知道吗

编辑:我能够让它与下面列出的解决方案之一工作(谢谢!),但我应该提到,我还需要包括1、3、4、6、7、9、10、11个月


Tags: 数据pandasif数字elseseasonsummerspring
3条回答

这里有一些疯狂的解决方案。你知道吗

这显然不是一个完整的示例,但足以理解您需要做什么:

# map of month number -> season name
months_dict = {12: 'Winter', 2: 'Spring', ...}

df['season'] = df['month_number'].map(months_dict)

是的,就是这样。你知道吗

如果您有任何问题,请告诉我:)

你能试试下面的吗。公平的警告,因为没有输入和预期输出的样本,所以没有测试它。你知道吗

import pandas as pd
import numpy as np
conditions=[df['month']==12,
            df['month']==2,
            df['month']==5,
            df['month']==8]
choices=['Winter','spring','Summer','fall']

df['season']=np.select(conditions,choices,default=np.nan)

您可以创建一个带有相应数字和季节名称的字典,然后将其映射到新系列:

season_dict = {12: "Winter",
              2: "Spring",
              5: "Summer",
              8: "Fall"}

df["season"] = df.month.replace(season_dict)

相关问题 更多 >