【问题标题】:pandas-how can I replace rows in a dataframepandas-如何替换数据框中的行
【发布时间】:2022-01-26 06:40:08
【问题描述】:

我是 Python 新手,尝试替换行。

我有一个数据框,例如:

X Y
1 a
2 d
3 c
4 a
5 b
6 e
7 a
8 b

我有两个问题:

1- 如何将第 2 行替换为第 5 行,例如:

X Y
1 a
5 b
3 c
4 a
2 d
6 e
7 a
8 b

2-如何将第6行放在第3行之上,例如:

X Y
1 a
2 d
6 e
3 c
4 a
5 b
7 a
8 b

【问题讨论】:

    标签: python pandas replace rows


    【解决方案1】:

    第一次使用DataFrame.iloc,python 从0开始计数,所以选择第二行使用1,第五行使用4

    df.iloc[[1, 4]] = df.iloc[[4, 1]]
    print (df)
       X  Y
    0  1  a
    1  5  b
    2  3  c
    3  4  a
    4  2  d
    5  6  e
    6  7  a
    7  8  b
    

    然后rename 索引上述值,此处为1 并仅使用稳定排序mergesort 进行排序:

    df = df.rename({5:1}).sort_index(kind='mergesort', ignore_index=True)
    print (df)
       X  Y
    0  1  a
    1  2  d
    2  6  e
    3  3  c
    4  4  a
    5  5  b
    6  7  a
    7  8  b
    

    【讨论】:

    • 非常感谢!我没有写“ignore_index=True”,因为如果我写它就会出错。错误是:“TypeError: sort_index() got an unexpected keyword argument 'ignore_index'”我不知道为什么
    • @Melissa - 因为使用一些较旧的 pandas 版本,您可以将其删除并使用 .sort_index(kind='mergesort').reset_index(drop=True). 如果我的回答有帮助,请不要忘记 accept 它。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 2017-03-23
    • 1970-01-01
    • 2015-03-01
    • 2021-07-22
    • 2018-09-29
    • 2021-09-02
    相关资源
    最近更新 更多