【问题标题】:copying pandas dataframe without messing it when extending list to a column将列表扩展到列时复制熊猫数据框而不弄乱它
【发布时间】:2021-04-23 07:43:22
【问题描述】:

我想要一个不同的数据框副本将列表扩展到其“父母”列,但问题是复制我知道不起作用的程序,所以我该怎么办?

第 1 行到第 4 行(用于复制数据帧)都不能正常工作,并且当我运行第 5 行时会弄乱我的主 df 'moves',但在运行第 6 行(#5 注释)时它们只能工作很好,所以问题是将列表放在熊猫数据框中的列中

moves=pd.DataFrame({"first":[0],"second":[5],'done':[0],'parents':[[-1]],'id':[0]})
# tdf=moves.copy(deep=True) #1
# tdf=moves.copy(deep=False) #2
# tdf=moves.loc[:] #3
# tdf=moves[:] #4
i=0
tdf.loc[i,'parents'].extend([moves.loc[i,'id']]) #5
# tdf.loc[i,'first']=4 #6
print(moves)

打印'moves'的结果会包含[-1,0],但如果复制做得好,它会像以前一样有[-1]。 我知道第 2 行不适用于原始复制,它会引用所以忽略第 2 行。

【问题讨论】:

    标签: python pandas list dataframe


    【解决方案1】:

    如果你想用相同的数据创建一个新的数据框,你可以写在下面 trf=移动

    然后根据您的要求进行更改

    【讨论】:

    • 打印 'moves' 的结果会包含 [-1,0],但如果复制做得好,它会像以前一样包含 [-1]。
    【解决方案2】:

    复制将数据帧移动到新的数据帧(tdf)并执行扩展操作。

    moves=pd.DataFrame({"first":[0],"second":[5],'done':[0],'parents':[[-1]],'id':[0]})
    i=0
    tdf = moves
    tdf.loc[i,'parents'].extend([moves.loc[i,'id']]) #5
    # tdf.loc[i,'first']=4 #6
    

    上面的代码给出了以下 tdf 的值

     first  second  done  parents  id
    0      0       5     0  [-1, 0]   0
    

    这是你要找的吗?

    【讨论】:

    • 不,我想要`第一秒完成父母ID 0 0 5 0 [-1] 0`当我打印(移动)时
    猜你喜欢
    • 2020-09-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2016-01-15
    • 2021-12-20
    • 2022-12-10
    • 2019-10-12
    相关资源
    最近更新 更多