You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中反转DataFrame指定列(第一列)的顺序

仅反转DataFrame第一列的实现方法

你之前用[::-1]会反转整个DataFrame的行顺序,导致所有列跟着反转。要只反转第一列(Frequency列),可以单独对该列的取值进行反转赋值,以下是两种可行的修改方式:

方法一:直接修改列值

在将列表转成DataFrame后,单独对Frequency列赋值反转后的结果:

import requests
from bs4 import BeautifulSoup
import pandas as pd

data = []

soup = BeautifulSoup(requests.get("https://kworb.net/spotify/country/us_weekly.html").content, 'html.parser')

for e in soup.select('#spotifyweekly tr:has(td)'):
    data.append({
        'Frequency':e.td.text,
        'Artists':e.a.text,
        'Songs':e.a.find_next_sibling('a').text
    })
data2 = data[:100]
# 转成DataFrame并处理第一列反转
df = pd.DataFrame(data2)
# 仅反转Frequency列的顺序
df['Frequency'] = df['Frequency'][::-1]
# 保存到Excel
df.to_excel('Kworb_Weekly.xlsx', index = False)

方法二:链式操作(assign方法)

如果喜欢更简洁的链式写法,可以用assign方法直接生成修改后的列:

import requests
from bs4 import BeautifulSoup
import pandas as pd

data = []

soup = BeautifulSoup(requests.get("https://kworb.net/spotify/country/us_weekly.html").content, 'html.parser')

for e in soup.select('#spotifyweekly tr:has(td)'):
    data.append({
        'Frequency':e.td.text,
        'Artists':e.a.text,
        'Songs':e.a.find_next_sibling('a').text
    })
data2 = data[:100]
# 链式处理并保存
pd.DataFrame(data2).assign(Frequency=lambda x: x['Frequency'][::-1]).to_excel('Kworb_Weekly.xlsx', index = False)

这两种方式都只会改变Frequency列的元素顺序,Artists和Songs列会保持原有的对应关系不变。

内容的提问来源于stack exchange,提问作者Hi Hi try

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:31:35