gpt4 book ai didi

python - 在 Pandas 中,根据不同模式选择多列的惯用方式是什么?

转载 作者:行者123 更新时间:2023-12-05 01:49:56 25 4
gpt4 key购买 nike

我正在尝试使用 Python 的 pandasnycflights13.flights 数据集复制一些 R4DS 的 dplyr 练习。我想要做的是从该数据集中选择:

  • (含)的列;
  • 所有以“delay”结尾的列;
  • distanceair_time

在书中,Hadley 使用了以下语法:

library("tidyverse")
library("nycflights13")

flights_sml <- select(flights,
year:day,
ends_with("delay"),
distance,
air_time
)

在 pandas 中,我想出了以下“解决方案”:

import pandas as pd
from nycflights13 import flights

flights_sml = pd.concat([
flights.loc[:, 'year':'day'],
flights.loc[:, flights.columns.str.endswith("delay")],
flights.distance,
flights.air_time,
], axis=1)

另一种可能的实现:

flights_sml = flights.filter(regex='year|day|month|delay$|^distance$|^air_time$', axis=1)

但我确信这不是编写此类 DF 操作的惯用方式。我四处寻找,但还没有从 pandas API 中找到适合这种情况的东西。

最佳答案

你是对的。这将创建多个数据帧/系列,然后将它们连接在一起,从而导致大量额外工作。相反,您可以创建要使用的列的列表,然后只需选择这些列即可。

例如(保持相同的列顺序):

cols = ['year', 'month', 'day'] + [col for col in flights.columns if col.endswith('delay')] + ['distance', 'air_time']
flights_sml = flights[cols]

关于python - 在 Pandas 中,根据不同模式选择多列的惯用方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73656759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com