我有一个数据框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
我希望为getVerb
中的每一行运行那些功能(getObj
和df1
)。有人可以帮助我有效地解决这个问题吗?
非常感谢您。
答案 0 :(得分:2)
熊猫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
的更多详细信息,请参见熊猫文档。
答案 1 :(得分:2)
假设您有一个熊猫数据框,例如:
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也可以派上用场。 干杯!
答案 2 :(得分:1)
使用一个简单的循环:(假设数据框中已经存在名称为“动词”和“对象”的列)
for index, row in df1.iterrows():
df1['verb'].iloc[index]= getVerb(row['sentence'])
df1['object'].iloc[index]= getObj(row['sentence'])