Python 更新数据帧2会影响作为数据帧2原点的数据帧1
我将在其原始数据帧上附加一个反向数据帧。看起来一切都正常,但后来我意识到:Python 更新数据帧2会影响作为数据帧2原点的数据帧1,python,pandas,dataframe,indexing,Python,Pandas,Dataframe,Indexing,我将在其原始数据帧上附加一个反向数据帧。看起来一切都正常,但后来我意识到:df1最初拥有id(1,1,1,2,2)。我将函数df2['id']=df2['id']应用于df2而不是df1,但无论如何,当我将df2附加到df1其ids时,它的ids也发生了变化。这怎么可能?为什么df1采用id列的df2值 import pandas as pd df1 = pd.DataFrame({'x':[1,1,2,9,9], 'y':[1,2,2,100,101],'id':[1,1,1,2,2]}) d
df1
最初拥有id
(1,1,1,2,2)。我将函数df2['id']=df2['id']应用于df2
而不是df1
,但无论如何,当我将df2
附加到df1
其ids
时,它的ids也发生了变化。这怎么可能?为什么df1
采用id列的df2
值
import pandas as pd
df1 = pd.DataFrame({'x':[1,1,2,9,9], 'y':[1,2,2,100,101],'id':[1,1,1,2,2]})
df2= df1[::-1] #df2 as reverse of df1
print(df1)
id_amount=df2['id'].nunique()
df2['id'] = df2['id'].apply(lambda x: x + id_amount)
df2=df2.sort_values(by=['id'])
df1=df1.append(df2)
df1 = df1.reset_index(drop=True)
print(df1)
这里是df1之前和之后:
#before
x y id
1 1 1
1 2 1
2 2 1
9 100 2
9 101 2
变成:
#after
x y id
1 1 3
1 2 3
2 2 3
9 100 4
9 101 4
2 2 3
1 2 3
1 1 3
9 101 4
9 100 4
应成为:
x y id
1 1 1
1 2 1
2 2 1
9 100 2
9 101 2
2 2 3
1 2 3
1 1 3
9 101 4
9 100 4
使用复制:
df2 = df1[::-1].copy()
使用复制:
df2 = df1[::-1].copy()
您可以使用concat
和sort\u index
来实现这一点,然后在最后求助
import pandas as pd
df1 = pd.DataFrame({'x':[1,1,2,9,9], 'y':[1,2,2,100,101],'id':[1,1,1,2,2]})
df1 = (pd.concat([df1, df1.assign(id=df1.id+df1.id.max()).sort_index(ascending=False)], ignore_index=True)
.sort_values('id')
.reset_index(drop=True))
x y id
0 1 1 1
1 1 2 1
2 2 2 1
3 9 100 2
4 9 101 2
5 2 2 3
6 1 2 3
7 1 1 3
8 9 101 4
9 9 100 4
您可以使用concat
和sort\u index
来实现这一点,然后在最后求助
import pandas as pd
df1 = pd.DataFrame({'x':[1,1,2,9,9], 'y':[1,2,2,100,101],'id':[1,1,1,2,2]})
df1 = (pd.concat([df1, df1.assign(id=df1.id+df1.id.max()).sort_index(ascending=False)], ignore_index=True)
.sort_values('id')
.reset_index(drop=True))
x y id
0 1 1 1
1 1 2 1
2 2 2 1
3 9 100 2
4 9 101 2
5 2 2 3
6 1 2 3
7 1 1 3
8 9 101 4
9 9 100 4
那很有效,谢谢。所以,如果我不这样做,它真的仍然与第一个链接?我是唯一一个觉得奇怪的人吗?是的。它链接到第一个,除非你创建了一个它的副本,谢谢。所以,如果我不这样做,它真的仍然与第一个链接?我是唯一一个觉得奇怪的人吗?是的。除非创建其副本,否则它将链接到第一个