Python 3.x 如何在多行上应用函数

Python 3.x 如何在多行上应用函数,python-3.x,pandas,csv,Python 3.x,Pandas,Csv,我使用pandate将一列中的一系列周期范围拆分为两列,即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['LatestD

我使用pandate将一列中的一系列周期范围拆分为两列,即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
lambda函数的结果仅覆盖“LatestDate”中的所有原始正确值(即使条件未获得),并使用相同的单个值(79)。我不知道为什么会这样——非常感谢。

请尝试而不是多个for循环:

data\u frame.loc[(data\u frame.EarliestDate>100)和(data\u frame.LatestDate>100)和(data\u frame.EarliestDate>data\u frame.LatestDate),'newCol']=数学层(data\u frame.loc[(data\u frame.EarliestDate>100)和(data\u frame.EarliestDate>data\u frame.LatestDate),'EarliestDate']/100)*+data\u frame.loc[(data_frame.EarliestDate>100)和(data_frame.LatestDate>100)和(data_frame.EarliestDate>data_frame.LatestDate),“LatestDate”]
可以使用掩码选择条件为真的所有行:

mask=(data\u frame.EarliestDate>100)和(data\u frame.LatestDate>100)和(data\u frame.EarliestDate>data\u frame.LatestDate)
您可以使用以下语法使用
.loc
选择这些行:

data_frame.loc[mask, 'newCol']

第二个参数是一个列索引,其中
newCol
将是
data\u frame
中的一个新列,因为它不存在。然后在equals的另一端,您使用相同的掩码,并使用指定的列进行计算。如果掩码无效,它将在
NaN
中留下一个值,非常感谢!您的解决方案非常有用--我发现只有一件事:我应该使用numpy而不是数学。此外,我在条件y>100时得到了一些不正确的结果,但您的方法准确地解析出了如何执行。谢谢!
data_frame.loc[mask, 'newCol']