numpy.where:TypeError:无效的类型提升

时间:2017-08-21 08:58:10

标签: python pandas numpy

我知道还有其他问题有相同的错误名称,但它们都没有匹配np.where语句,而且我也找不到我的问题的答案 < / p>

所以我制作了一个名为DataFrame的大熊猫data并创建了一个名为Series的{​​{1}},其中包括:

dates

我需要清除一些日期,因为它们与dates= pd.to_datetime(pd.to_timedelta(data.a_date, unit= 'D') + pd.datetime(1960,1,1), errors= 'coerse') 中的指标不匹配,所以我尝试在使用data保持索引正确的同时进行调整, 但我得到了这个错误:

numpy.where

3 个答案:

答案 0 :(得分:3)

如果您想保留日期类型,请将string input = "[[string 1]] - [[string 2]] : [[string 3]]"; var parts = Regex.Matches(input, @"\[\[.+?\]\]").Cast<Match>().Select(x => x.Value) .ToArray(); 替换为np.nan

np.datetime64('NaT')

答案 1 :(得分:1)

np.where(cond, x, y)的文档说第二个和第三个参数--x和y - 需要是array或array_like。另外,我相信x和y必须具有相同的形状。

你的x是标量(np.nan),y是一个array_like对象(dates)。也许这就是问题所在。

答案 2 :(得分:1)

我遇到了类似的问题,并设法通过从索引中获取date属性来修复它,即这有效:

np.where(condition, df.x, df.index.date)

这不起作用:

np.where(condition, df.x, df.index)

当索引有dtype='datetime64[ns]'

希望有所帮助!