簡體   English   中英

為數據框中的每一行運行函數

[英]Run functions for each row in dataframe

我有一個數據df1 ,像這樣:

date        sentence
29/03/1029  I like you
30/03/2019  You eat cake

並運行函數getVerbgetObj到數據幀df1 因此,輸出如下所示:

date        sentence      verb   object
29/03/1029  I like you    like   you
30/03/2019  You eat cake  eat    cake

我希望為df1每一行運行這些函數( getVerbgetObj )。 有人可以幫助我有效解決此問題嗎?

非常感謝。

熊貓DataFrame每一列都是一個Series 您可以使用Series.applySeries.map函數來獲取所需的結果。

df1['verb'] = df1['sentence'].apply(getVerb)
df1['object'] = df1['sentence'].apply(getObj)

# OR

df1['verb'] = df1['sentence'].map(getVerb)
df1['object'] = df1['sentence'].map(getObj)

有關Series.applySeries.map更多詳細信息,請參見熊貓文檔。

假設您有一個熊貓數據框,例如:

import pandas as pd, numpy as np

df = pd.DataFrame([[4,9]] * 3,列= ['A','B'])

>>>df
   A  B
   4  9
   4  9         
   4  9

假設,我們要按行和按列分別求A和B列的總和。 為此,我們寫

df.apply(np.sum, axis = 1) # for row-wise sum
Output: 13 
        13
        13
df.apply(np.sum, axis = 0) # for column-wise sum
Output: A 12
        B 27

現在,如果要對特定的一組列應用任何功能,則可以從數據框中選擇一個子集。

例如:我只想計算A列上的總和。

df['A'].apply(np.sum, axis =1)

Dataframe.apply

您也可以參考上面的鏈接。 除此之外,如上述答案中所述,Series.map,Series.apply也可以派上用場。 干杯!

使用一個簡單的循環:(假設數據框中已經存在名稱為“動詞”和“對象”的列)

for index, row in df1.iterrows():
    df1['verb'].iloc[index]= getVerb(row['sentence'])
    df1['object'].iloc[index]= getObj(row['sentence'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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