【问题标题】:Inserting columns to existing DataFrame将列插入现有 DataFrame
【发布时间】:2016-03-12 13:50:08
【问题描述】:

关于 DataFrame 的非常基本的问题。

我有以下几点:

import pandas as pd
dic = {'name':['joe strummer','johnny rotten'],'age':[73,80]}
df = pd.DataFrame(dic)

def pX(s):
    result=[]
    for i in s:
        x = pd.Series(i.split(' '))
        result.append(x)
    return result
df2 = pd.DataFrame(pX(df['name']))
df2.columns=['first','second']
df2

我希望将 df2 插入到 df 中,以便 df 中的列是这些 - 以这个特定的顺序:

第一|第二 |姓名 |年龄

【问题讨论】:

    标签: python pandas ipython dataframe


    【解决方案1】:

    如果我理解你的问题,你想连接 df 和 df2,使用 pandas concat 将产生:

    print pd.concat([df2,df], axis=1, join_axes=[df.index])
    
        first    second  age           name
    0     joe  strummer   73   joe strummer
    1  johnny    rotten   80  johnny rotten
    

    也可以使用 pandas 合并:

    print pd.merge(df2,df,left_index=[df.index], right_index='True')
    
        first    second  age           name
    0     joe  strummer   73   joe strummer
    1  johnny    rotten   80  johnny rotten
    

    【讨论】:

    • 感谢 Hugo,这完全符合我的要求。我最终使用了 DataFrame 插入方法,但我认为您在索引列上加入的想法更好。
    • 如果我们想使用merge 来实现这一点,语法是什么?是否可以? pd.merge(df2,df,left_on=[df.index],right_on=[df2.index]) 之类的东西……这个错误。
    • @whytheq 差不多,如果你想使用 pandas 合并你不应该合并 left_on 和 right_on 因为我们要合并索引:pd.merge(df2,df,left_index=[df.index], right_index='True')
    • 好的 Hugo - 所以索引“列”不被视为普通列,我会使用 left_onright_on 加入?
    • 没错,不过我对 pandas 合并不太熟悉,而是仔细看看 here。您也可以使用df2.join(df)。但是我不确定什么时候应该坚持使用concatmergejoin,这有兴趣知道..
    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 2017-08-10
    • 1970-01-01
    • 2021-08-08
    • 2019-03-22
    • 2020-07-21
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多