亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

Pandas DataFrame 按周期拆分:高效分割公交線路數(shù)據(jù)

花韻仙語
發(fā)布: 2025-10-16 14:44:28
原創(chuàng)
747人瀏覽過

pandas dataframe 按周期拆分:高效分割公交線路數(shù)據(jù)

本文介紹了如何使用 Pandas 將 DataFrame 按照特定的站點循環(huán)進行拆分,尤其適用于處理公交線路數(shù)據(jù),將包含多個循環(huán)的單條線路數(shù)據(jù)分割成獨立的行程。通過 `groupby` 和 `numpy.array_split` 兩種方法,可以靈活地根據(jù)站點周期性重復的特點,將 DataFrame 分割成多個子 DataFrame,每個子 DataFrame 代表一個完整的行程。

在處理公交線路數(shù)據(jù)時,我們經(jīng)常會遇到需要將包含多個行程的 DataFrame 按照行程進行拆分的情況。例如,一個 DataFrame 包含了某條公交線路一天內(nèi)的所有站點和時間信息,而我們希望將它分割成多個子 DataFrame,每個子 DataFrame 代表一次完整的行程。本文將介紹兩種方法來實現(xiàn)這個目標:使用 groupby 和使用 numpy.array_split。

方法一:使用 groupby

這種方法的核心思想是,通過比較當前站點與第一個站點是否相同,并使用 cumsum 函數(shù)來生成分組的依據(jù)。每次遇到第一個站點時,分組計數(shù)器就會增加,從而將 DataFrame 分成多個組。

代碼示例:

import pandas as pd

df = pd.DataFrame({
    "scheduled": ["2023-05-25 13:00", "2023-05-25 13:15", "2023-05-25 13:45", "2023-05-25 14:35", "2023-05-25 14:50", "2023-05-25 15:20"],
    "stop": ["A", "B", "C", "A", "B", "C"]
})

# 將 scheduled 列轉(zhuǎn)換為 datetime 類型
df["scheduled"] = pd.to_datetime(df["scheduled"])

# 創(chuàng)建分組依據(jù)
group = df['stop'].eq(df['stop'].iloc[0]).cumsum()

# 使用 groupby 進行分組
out = [g for _, g in df.groupby(group)]

print(out)
登錄后復制

代碼解釋:

  1. df['stop'].eq(df['stop'].iloc[0]): 這部分代碼比較了 stop 列中的每個元素與第一個元素是否相等,返回一個布爾類型的 Series。
  2. .cumsum(): 這部分代碼對布爾類型的 Series 進行累加求和。當遇到第一個站點時,布爾值為 True,累加值加 1,從而形成分組的依據(jù)。
  3. df.groupby(group): 這部分代碼使用 groupby 函數(shù),根據(jù)生成的分組依據(jù)對 DataFrame 進行分組。
  4. [g for _, g in df.groupby(group)]: 這部分代碼使用列表推導式,將分組后的結(jié)果轉(zhuǎn)換為一個列表,列表中的每個元素都是一個子 DataFrame。

輸出結(jié)果:

[                 scheduled stop
0 2023-05-25 13:00:00    A
1 2023-05-25 13:15:00    B
2 2023-05-25 13:45:00    C,                  scheduled stop
3 2023-05-25 14:35:00    A
4 2023-05-25 14:50:00    B
5 2023-05-25 15:20:00    C]
登錄后復制

注意事項:

辦公小浣熊
辦公小浣熊

辦公小浣熊是基于商湯大語言模型的原生數(shù)據(jù)分析產(chǎn)品,

辦公小浣熊77
查看詳情 辦公小浣熊
  • 這種方法假設(shè)站點循環(huán)的模式是重復的,并且知道第一個站點是什么。
  • 這種方法適用于站點數(shù)量未知,但循環(huán)模式已知的情況。

方法二:使用 numpy.array_split

這種方法的核心思想是,首先計算出唯一的站點數(shù)量,然后使用 numpy.array_split 函數(shù)將 DataFrame 按照站點數(shù)量進行分割。

代碼示例:

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "scheduled": ["2023-05-25 13:00", "2023-05-25 13:15", "2023-05-25 13:45", "2023-05-25 14:35", "2023-05-25 14:50", "2023-05-25 15:20"],
    "stop": ["A", "B", "C", "A", "B", "C"]
})

# 將 scheduled 列轉(zhuǎn)換為 datetime 類型
df["scheduled"] = pd.to_datetime(df["scheduled"])

# 計算唯一站點的數(shù)量
n = df['stop'].nunique()

# 使用 numpy.array_split 進行分割
out = np.array_split(df, range(n, len(df), n))

print(out)
登錄后復制

代碼解釋:

  1. df['stop'].nunique(): 這部分代碼計算 stop 列中唯一值的數(shù)量,即站點的數(shù)量。
  2. range(n, len(df), n): 這部分代碼生成一個分割點的列表。例如,如果 n 為 3,len(df) 為 6,則生成的列表為 [3],表示在索引為 3 的位置進行分割。
  3. np.array_split(df, range(n, len(df), n)): 這部分代碼使用 numpy.array_split 函數(shù),根據(jù)分割點列表將 DataFrame 分割成多個子 DataFrame。

輸出結(jié)果:

[                 scheduled stop
0 2023-05-25 13:00:00    A
1 2023-05-25 13:15:00    B
2 2023-05-25 13:45:00    C,                  scheduled stop
3 2023-05-25 14:35:00    A
4 2023-05-25 14:50:00    B
5 2023-05-25 15:20:00    C]
登錄后復制

注意事項:

  • 這種方法假設(shè)每個行程包含的站點數(shù)量是相同的。
  • 這種方法適用于已知站點數(shù)量,且每個行程站點數(shù)量相同的情況。

總結(jié)

本文介紹了兩種使用 Pandas 拆分 DataFrame 的方法,分別使用了 groupby 和 numpy.array_split 函數(shù)。選擇哪種方法取決于數(shù)據(jù)的特點和需求。如果站點循環(huán)模式已知,可以使用 groupby 方法;如果已知站點數(shù)量且每個行程站點數(shù)量相同,可以使用 numpy.array_split 方法。在實際應用中,可以根據(jù)具體情況選擇合適的方法,或者結(jié)合兩種方法來實現(xiàn)更復雜的需求。

以上就是Pandas DataFrame 按周期拆分:高效分割公交線路數(shù)據(jù)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

相關(guān)標簽:
最佳 Windows 性能的頂級免費優(yōu)化軟件
最佳 Windows 性能的頂級免費優(yōu)化軟件

每個人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進程會占用資源并降低性能。幸運的是,許多工具可以讓 Windows 保持平穩(wěn)運行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
熱門推薦
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號