【问题标题】:In pandas appending to existing df, with out changing id of df?在附加到现有df的熊猫中,不改变df的id?
【发布时间】:2018-03-14 07:11:34
【问题描述】:

我有一个数据框df1,其中包含一些文本和数字作为列。 我用数据创建了新行,并使用 pandas 附加到 df1,如下所示。结果 df 的 id 正在改变。 有没有办法不改变主df1的id,并附加到现有的df,而不改变df的id?

我的代码是:

import cStringIO as io
import pandas as pd

def test():
    text_data = """bcd  11  
    abc  12  
    def  13
    ghi  14"""

    df = pd.read_csv(io.StringIO(text_data), header=None, sep="\s+", names=["txt", "num"])
    df2 = pd.DataFrame([["pqr", 1]], columns=["txt", "num"])
    print "id is =",id(df), "\n" ,df
    df = pd.concat([df, df2])
    print "id is =", id(df), "\n", df

if __name__ == '__main__':
    test()

【问题讨论】:

    标签: python python-2.7 pandas dataframe


    【解决方案1】:

    如果只附加一行并使用 setting with enlargement 是可能的,但如果使用 concatappend 获取新的 DataFrame 对象(不同的 ids):

    from pandas.compat import StringIO
    
    def test():
        text_data = """bcd  11  
        abc  12  
        def  13
        ghi  14"""
    
        df = pd.read_csv(StringIO(text_data), header=None, sep="\s+", names=["txt", "num"])
        df2 = pd.DataFrame([["pqr", 1]], columns=["txt", "num"])
        print ("id is =",id(df), "\n" ,df)
        df.loc[len(df.index)] = df2.iloc[0]
        print ("id is =", id(df), "\n", df)
    
    test()
    
    id is = 243587168 
        txt  num
    0  bcd   11
    1  abc   12
    2  def   13
    3  ghi   14
    id is = 243587168 
        txt  num
    0  bcd   11
    1  abc   12
    2  def   13
    3  ghi   14
    4  pqr    1
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 2021-10-31
      • 2021-12-22
      • 2018-08-27
      • 2022-11-03
      • 1970-01-01
      • 2018-12-01
      • 2020-06-20
      相关资源
      最近更新 更多