【问题标题】:Applying a function to a dataframe column pandas将函数应用于数据框列 pandas
【发布时间】:2018-10-16 07:10:35
【问题描述】:

我目前创建了一个函数来应用于 pandas 数据框,如下所示:

def timebin (col):
timebin = []
for x in range(len(col)):
    if x>=0 & x<5:
        return 'night'
    elif x>5 & x<9:
        return 'early_morning'
    elif x>8 & x<12:
        return 'morning'
    elif x>11 & x<15:
        return 'afternoon'
    elif x>14 & x<18:
        return 'late_afternoon'
    elif x>17 & x<21:
        return 'evening'
    else:
        return 'night'

    timebin.append(x)

return timebin 

并应用于数据框:

df['new_col'] = timebin(df['col'])

当我尝试这个时,我得到的只是“晚上”。有什么建议吗?

谢谢

【问题讨论】:

  • &amp; 是按位的,并且在 Python 中...似乎您想要逻辑,并且拼写为 and... 或者将其重写为 if 0 &lt;= x &lt; 5 elif 5 &lt;= x &lt; 9 等...或看看pd.cut...

标签: pandas function dataframe apply


【解决方案1】:

cutfillna 一起使用:

df = pd.DataFrame({
    'col': list(range(24))
})

bins = [0,5,9,12,15,18,21]
lab = ['night','early_morning','morning','afternoon','late_afternoon','evening']
df['new_col'] = pd.cut(df['col'], bins=bins, labels=lab, right=False).fillna('night')
print (df)
    col         new_col
0     0           night
1     1           night
2     2           night
3     3           night
4     4           night
5     5   early_morning
6     6   early_morning
7     7   early_morning
8     8   early_morning
9     9         morning
10   10         morning
11   11         morning
12   12       afternoon
13   13       afternoon
14   14       afternoon
15   15  late_afternoon
16   16  late_afternoon
17   17  late_afternoon
18   18         evening
19   19         evening
20   20         evening
21   21           night
22   22           night
23   23           night

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2021-02-03
    • 2019-05-01
    • 1970-01-01
    • 2020-03-23
    相关资源
    最近更新 更多