我有一个数据帧df1
,如下所示:
date sentence
29/03/1029 I like you
30/03/2019 You eat cake
并将函数getVerb
和getObj
运行到dataframe df1
。因此,输出如下所示:
date sentence verb object
29/03/1029 I like you like you
30/03/2019 You eat cake eat cake
我希望为df1
中的每一行运行这些函数(getVerb
和getObj
)。有没有人能帮我有效地解决这个问题?
非常感谢。
发布于 2019-07-20 03:23:56
熊猫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
的更多详细信息,请参阅pandas文档。
发布于 2019-07-20 04:12:08
假设您有一个pandas数据帧,例如:
import pandas as pd, numpy as np
df = pd.DataFrame([4,9] *3,columns='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列的sum。
df['A'].apply(np.sum, axis =1)
你也可以参考上面的链接。除此之外,Series.map、Series.apply也可能很方便,正如上面的答案中所提到的。干杯!
发布于 2019-07-20 08:13:34
使用一个简单的循环:(假设数据框中已经存在名为'verb‘和’object‘的列)
for index, row in df1.iterrows():
df1['verb'].iloc[index]= getVerb(row['sentence'])
df1['object'].iloc[index]= getObj(row['sentence'])
https://stackoverflow.com/questions/57121488
复制相似问题