微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何交换两行Pandas DataFrame?

如何解决如何交换两行Pandas DataFrame?

假设我有这个数据框:

    0   1   2   3   4
0   0   1   2   3   4
1   5   6   7   8   9
2  10  11  12  13  14
3  15  16  17  18  19
4  20  21  22  23  24

我想交换第1行和第2行的位置。

是否有可以执行此操作的本地Pandas函数? 谢谢!

解决方法

rename与自定义字典和sort_index一起使用

d = {1: 2,2: 1}
df_final = df.rename(d).sort_index()

Out[27]:
    0   1   2   3   4
0   0   1   2   3   4
1  10  11  12  13  14
2   5   6   7   8   9
3  15  16  17  18  19
4  20  21  22  23  24
,

据我所知,尚无此功能。

但这是一个custum函数:

# Input
df = pd.DataFrame(np.arange(25).reshape(5,-1))

# Output
def swap_rows(df,i1,i2):
    a,b = df.iloc[i1,:].copy(),df.iloc[i2,:].copy()
    df.iloc[i1,:],:] = b,a
    return df

print(swap_rows(df,1,2))

输出:

    0   1   2   3   4
0   0   1   2   3   4
1  10  11  12  13  14
2   5   6   7   8   9
3  15  16  17  18  19
4  20  21  22  23  24

干杯!

,

尝试numpy flip

df.iloc[1:3] = np.flip(df.to_numpy()[1:3],axis=0)

df

        0   1   2   3   4
    0   0   1   2   3   4
    1   10  11  12  13  14
    2   5   6   7   8   9
    3   15  16  17  18  19
    4   20  21  22  23  24
,
df1=df.copy()
df1.iloc[1,df1.iloc[2,:]=df.iloc[2,df.iloc[1,:]
df1

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。