【问题标题】:Pandas: apply a specific function to columns and create column in new dataframePandas:将特定功能应用于列并在新数据框中创建列
【发布时间】:2019-11-07 23:30:52
【问题描述】:

我有一个数据框df1,像这样:

date        sentence
29/03/1029  i like you
.....

我想像这样创建新的数据框df2

date         verb    object
29/03/2019   like    you
....

使用这样的功能:

def getSplit(df1):
    verbList = []
    objList  = []
    df2 = pd.DataFrame()
    for row in df1['sentence']:
        verb = getVerb(row)
        obj  = getObj(row)
        verbList.append(verb)
        objList.append(obj)
    df2 = df1[[date]].copy
    df2['verb'] = verbList
    df2['object'] = objList
    return df2

我的函数运行良好,但速度很慢。有人可以帮我改进一下功能,以便运行得更快吗?

谢谢

【问题讨论】:

    标签: python python-3.x pandas loops dataframe


    【解决方案1】:

    你可以使用pandas的@​​987654321@方法来快速处理:-

    getverb(row):
        pass  # Your function
    getobj(row):
        passs # Your function
    df2 = df1.copy()  # Making copy of your dataframe.
    
    df2['verb'] = df2['sentence'].apply(getverb)
    df2['obj'] = df2['sentence'].apply(getobj)
    df2.drop('sentence', axis=1, inplace=True)  # Droping sentence column
    df2
    

    希望对你有帮助。 (接受并支持答案)

    【讨论】:

    • 你的意思是df2['verb'] = df1['sentence'].apply(getverb)
    • @elisa 不,我的意思是df1。如果您不想更改df1 中的任何内容,请先复制df1,然后使用该副本。我已经修改了我的代码你可以看到它
    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多