如何根据特定条件将数据帧中具有月份的列转换为字母数字(而不是数字)

2024-06-02 04:45:41 发布

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

我有一个数据框,其中一列包含月份

我想用字母数字(1、2、3等,而不是1、2、3等)更新月份的值 是否有任何库可用于对整个列进行此转换

另外,该列包含1200多行,因此手动操作没有意义


Tags: 数据字母数字手动意义月份
2条回答

没有库会自动为您执行此操作。你必须给出每个月的值,因为你提到你有月份的“名称”而不是数字。试试这个:

df['arrival_date_month'] = df['arrival_date_month'].str[:3]
df.loc[df["arrival_date_month"] == "Jan", 'arrival_date_month'] = 'One'
df.loc[df["arrival_date_month"] == "Feb", 'arrival_date_month'] = 'Two'
df.loc[df["arrival_date_month"] == "Mar", 'arrival_date_month'] = 'Three'
df.loc[df["arrival_date_month"] == "Apr", 'arrival_date_month'] = 'Four'
df.loc[df["arrival_date_month"] == "May", 'arrival_date_month'] = 'Five'
df.loc[df["arrival_date_month"] == "Jun", 'arrival_date_month'] = 'Six'
df.loc[df["arrival_date_month"] == "Jul", 'arrival_date_month'] = 'Seven'
df.loc[df["arrival_date_month"] == "Aug", 'arrival_date_month'] = 'Eight'
df.loc[df["arrival_date_month"] == "Sep", 'arrival_date_month'] = 'Nine'
df.loc[df["arrival_date_month"] == "Oct", 'arrival_date_month'] = 'Ten'
df.loc[df["arrival_date_month"] == "Nov", 'arrival_date_month'] = 'Eleven'
df.loc[df["arrival_date_month"] == "Dec", 'arrival_date_month'] = 'Twelve'

有趣的事实:如果你想根据某些条件设置值,你也可以在这里玩条件。尝试用其他条件替换==“Jan”

干杯

^{}与字典一起使用:

s = pd.to_datetime([1,2,3,4,5,6,7,8,9,10,11,12], format='%m').strftime('%b')
df = pd.DataFrame({'months': s})


d = {'Jan': 'One', 'Feb': 'Two', 'Mar': 'Three', 
     'Apr': 'Four', 'May': 'Five', 
     'Jun': 'Six', 'Jul': 'Seven', 'Aug': 'Eight',
     'Sep': 'Nine', 'Oct': 'Ten', 'Nov': 'Eleven', 'Dec': 'Twelve'}

df['months1'] = df['months'].map(d)
print (df)
   months months1
0     Jan     One
1     Feb     Two
2     Mar   Three
3     Apr    Four
4     May    Five
5     Jun     Six
6     Jul   Seven
7     Aug   Eight
8     Sep    Nine
9     Oct     Ten
10    Nov  Eleven
11    Dec  Twelve

相关问题 更多 >