簡體   English   中英

在Pandas數據框中的行對上應用函數

[英]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 ,因為這可能會降低性能 相反,您可以將mappd.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM