[英]Run functions for each row in dataframe
我有一個數據df1
,像這樣:
date sentence
29/03/1029 I like you
30/03/2019 You eat cake
並運行函數getVerb
和getObj
到數據幀df1
。 因此,輸出如下所示:
date sentence verb object
29/03/1029 I like you like you
30/03/2019 You eat cake eat cake
我希望為df1
每一行運行這些函數( getVerb
和getObj
)。 有人可以幫助我有效解決此問題嗎?
非常感謝。
熊貓DataFrame
每一列都是一個Series
。 您可以使用Series.apply
或Series.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.apply
或Series.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)
您也可以參考上面的鏈接。 除此之外,如上述答案中所述,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.