为datafram中的每一行运行函数

2024-10-04 07:29:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧df1,如下所示:

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

并将函数getVerbgetObj运行到dataframe df1。所以,输出是这样的:

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

我希望这些函数(getVerbgetObj)为df1中的每一行运行。有人能帮我有效地解决这个问题吗?你知道吗

非常感谢。你知道吗


Tags: 数据函数youdataframedateobjectsentencelike
3条回答

一个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)

有关^{}^{}的更多详细信息,请参阅熊猫文档。你知道吗

假设您有一个数据帧,例如:

import pandas as pd, numpy as np

数据框=pd.数据帧([[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

你也可以参考上面的链接。除此之外,系列.map, 系列.应用也可能很方便,正如上面的答案所提到的。 干杯!你知道吗

使用简单循环:(假设数据框中已经存在名为“verb”和“object”的列)

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

相关问题 更多 >