我正在尝试交换 pandas 中同一 DataFrame 中的行。
我试过运行
a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B'])
b, c = a.iloc[0], a.iloc[1]
a.iloc[0], a.iloc[1] = c, b
但我最后两行都显示了第二行 (3,4) 的值。
甚至变量 b 和 c 现在都分配给了 3 和 4,尽管我没有再次分配它们。我做错了什么吗?
最佳答案
使用临时变量来存储使用 .copy()
的值,因为您在链上分配值时更改值,即除非您使用复制,否则数据将被直接更改。
a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B'])
b, c = a.iloc[0], a.iloc[1]
temp = a.iloc[0].copy()
a.iloc[0] = c
a.iloc[1] = temp
或者你也可以直接使用copy like
a = pd.DataFrame(data = [[1,2],[3,4]], index=range(2), columns = ['A', 'B'])
b, c = a.iloc[0].copy(), a.iloc[1].copy()
a.iloc[0],a.iloc[1] = c,b
关于python - 在同一 Pandas 数据框中交换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46890972/