0
我想了解一種方法來比較數據框中不同行的值以計算新列。計算引用熊貓數據幀中的前一行的行值
我發現這些方法來
- 迭代行(我正在尋找一個解決方案矢量):
for index, row in df.iterrows(): ....
- 合併相同的數據幀多次使用換檔指數,如下所示:
d1 = data.shift() data.merge(d1[["value col"]], how="inner", left_index=True, right_index=True)
有沒有辦法從申請方法訪問當前數據幀:
dataframe.apply(myfunction(row),axis=1)
def my_function(row, current_dataframe)
index = row.name
row_to_compare = current_dataframe.iloc[index-delta]
row["new column"] = calc(row["value], row_to_compare["value"])
return row
將它作爲論據似乎不工作:
data.apply(date_diff,axis=1,args=(data))
or
data.apply(lambda row,df: date_diff(row, df),axis=1,args=(data))
口口聲聲說:
> ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
有沒有辦法讓 這行得通?
謝謝。
它基本上是一個基於不同列的衍生術語,因爲您指出它可以簡單地使用shift()方法完成,但我想知道它是否可以編譯爲函數以使代碼更具可讀性。 – kothvandir
當然,你可以在應用函數中做任何你想做的事情。然而,它會大大減慢。 – simon