首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-带字典的NumPy.Where

Python-带字典的NumPy.Where
EN

Stack Overflow用户
提问于 2018-10-29 11:31:34
回答 2查看 3.4K关注 0票数 3

我可能做错了,也可能有比这更好的方法,因为我对Python还不熟悉。为任何明显的错误预先道歉。

我有一个的STR列,包含日期和时间。这是STR,因为时代是“广播”格式化,这意味着有29个小时在一天。因此,我们将看到类似01/2018年1月29日:59:59的日期。时间是1秒和02/1/2018:06:00。

我在这里的目标是将这些数据转换成实时的。这意味着24到29岁之间的任何一个小时都需要换班。我已经把STR分成两个新的列'Dt‘和'Ti',从'Ti',把这个小时作为'Hr’的一个新列,并使它成为一个INT。

然后,我对'Dt‘应用了一个pd.to_datetime,并添加了一个规则。

代码语言:javascript
复制
df['Dt'] = np.where(df['Hr'] > 23, df['Dt']+pd.DateOffset(1),df['Dt']+pd.DateOffset(0) )

这是完美的。

我现在需要改变的时间是实时的,例如,24 = 00,25 = 02等。

我认为最好的方法是用一个字典来映射它,所以我做了一个小插曲,

代码语言:javascript
复制
HourMap = {'24':'00','25':'01','26':'02','27':'03','28':'04','29':'05','30':'06'}  

然后写了这个

代码语言:javascript
复制
df['Hr1'] = np.where(df['Hr'] > 23, df.replace({'Hr':HourMap}),df['Hr'])

但我得到了一个"ValueError“

代码语言:javascript
复制
ValueError: operands could not be broadcast together with shapes (273,) (273,29) (273,)

我看过数据帧中的那些行,它们只是普通的in。考试时,我可以把数学应用到他们身上。df‘’Test‘=df’‘Hr’+ 1。

我确实将它们转换为STR,并尝试了相同的规则,但是得到了相同的错误。

我只是疯了吗?

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-29 12:16:01

你真的不应该在这里使用字典,你甚至不需要np.where。使用模算子

代码语言:javascript
复制
In [1]: import numpy as np
In [2]: np.arange(31)%24
Out[2]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23,  0,  1,  2,  3,  4,  5, 6], dtype=int32)

你有24岁左右的数字,这是模块的教科书用例。所以完整的代码变成:

代码语言:javascript
复制
df['Hr1'] = df['Hr'] % 24

同样,通过使用整数除法,您可以在不使用np.where的情况下添加日期。

代码语言:javascript
复制
df['Dt'] = df['Dt']+pd.DateOffset(Df['Hr']//24)
票数 3
EN

Stack Overflow用户

发布于 2018-10-29 11:33:42

我认为需要改变:

代码语言:javascript
复制
df.replace({'Hr':HourMap})

map,如果某些值不匹配并返回NaN的,则由fillna替换为原始值。

代码语言:javascript
复制
df['Hr'].map(HourMap).fillna(df['Hr'])
#alternative solution if performance is not important in large df
#df['Hr'].replace(HourMap)

因为df.replace用替换的列Hr返回DataFrame的所有列

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53044621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档