【发布时间】:2020-08-19 18:26:08
【问题描述】:
我使用 pandas 将一列中的一系列周期范围分成两列,即 Date = 100-120 --> EarliestDate = 100,LatestDate = 120
唯一的问题是某些范围还包含缩写(即 150-56 或 225-26,会导致不良结果,例如 {150, 56} 和 {225-26})
我正在尝试编写一个扩展缩写的函数。类似的东西
def expansion(x, y):
for x in data_frame['EarliestDate']:
for y in data_frame['LatestDate']:
if x>100 and y>100 and y<x:
return (math.floor(x/100))*100 + y)
else:
pass
基本上,我取最早范围内的数字,除以 100,用 math.floor 将其四舍五入,然后将其添加到后面的范围(因此 56 将变回 156)。我不确定这是否是最有效的方法(也许转换为字符串并使用正则表达式会更好?)我还必须为日期范围涉及日期 1-99 或负日期(即-110)
但我的主要问题是当我将它作为 lambda 函数应用时:
data_frame['LatestDate'] = data_frame[['EarliestDate', 'LatestDate']].apply(lambda x: expansion(x.EarliestDate, x.LatestDate), axis=1)
lambda 函数的结果只是用相同的单个值 (79) 覆盖 'LatestDate' 中的所有原始正确值(即使条件未获得)。我不知道为什么会这样——非常感谢。
【问题讨论】:
标签: python-3.x pandas csv