[英]Apply function on pairs of rows in Pandas dataframe
我是熊猫数据框的新手,我想应用一个函数在同一列中包含几行。 就像当您应用函数diff()时一样,但是我想计算文本之间的距离。 所以我定义了一个测量距离的函数,我尝试使用apply,但是我不知道如何挑选几行。 下面,我展示了一个我尝试做过的例子以及我的期望:
def my_measure_function(x,y):
return some_distance_calculus(x,y)
>>> from pandas import DataFrame
>>> df = DataFrame({"text": ['hello','hella','hel'], "B": [3,4,4]})
>>> df['dist'] = df.apply(lambda x, y: my_measure_function(x, y), axis=0)
但这不起作用。 我想要获得的是:
>>> df
text B dist
0 hello 3 0
1 hella 4 1
2 hel 4 2
预先感谢您可以为我提供的任何帮助。
您可能希望避免使用pd.DataFrame.apply
,因为这可能会降低性能 。 相反,您可以将map
与pd.Series.shift
一起pd.Series.shift
:
df['dist'] = list(map(my_measure_function, df['text'], df['text'].shift()))
或通过列表理解:
zipper = zip(df['text'], df['text'].shift())
df['dist'] = [my_measure_function(val1, val2) for val1, val2 in zipper]
对于diff
,它是ss.shift()
,因此可以在函数中执行
df['shifttext']=df.text.shift()
df.apply(lambda x : my_measure_function(x['text'],x['shifttext']))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.