使用條件對數據框進行分區

塞巴茲44

我有一個看起來像這樣的數據框

       vid   sid   pid  ts
1      101    123  ...
2      102    125
3      102    125
4      102    125

本質上vid是一個訪問者id並且sid是一個會話 ID

我正在嘗試將長度約為 170 萬行的 df 分區為長度約為 100k 的較小數據幀。

for i in range(0, len(df), s):
    sdf = df.iloc[i:i+s]

不過,我希望切片數據框在一個會話(所以其中一個切片部分最後一行是不是最後的中間。

例如,下面將是一個問題,因為它對會話 idsid仍在發生的數據幀進行切片

         vid   sid   pid  ts
99999    101    144  ...
99999    102    145
100000   102    145
--------------------------
100001   102    145

我正在尋找某種方法來做到這一點,如果切斷發生在sids切斷的地方,只需推動切斷直到 sid 不再相同,例如

for i in range(0, len(df), s):
    if i['sid'][-1] != (i+1)['sid']:
        sdf = df.iloc[i:i+s]
    else:
      # check until sessions are no longer equal 

您可以使用DASK

import dask.dataframe as dd
ddf = dd.from_pandas(df.set_index('sid'), npartitions=17).reset_index()

請注意,分區數並未強制為始終為17dask 可能會決定以不同方式進行分區以將索引保留在一個分區中 - 這正是您想要的。或者,您也可以指定我認為的行數或行數。

然後你可以用類似的東西來獲取分區

ddf.get_partition(3).compute() 

或者直接使用 dask 進行分佈式計算,因為這就是它的目的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用 tidyr/dplyr 對數據框的元素進行分組和選擇

如何使用dplyr在R中按月對數據進行分組

對列表中的數據框列進行分組

對數據框的列進行排序的問題

按特定列值對數據框進行分組

使用熊貓按條件對數據進行分組

如果條件與數據框

PHP中根據兩個條件對多個關聯數組進行分組和排序

根據pandas中的字典對數據框的行進行分組並對相應的分子求和

使用 dplyr 根據 R 中的特定列對數據框進行排序

根據條件(包含特定字符串)對數據進行分組

對來自熊貓數據框的連續值進行分組

使用外鍵數據對 Django 視圖進行分頁

對熊貓數據框列進行分組和計數

如何以特定方式對我的數據框進行分組和轉置?

如何根據條件在 Python 中對數據幀進行下採樣

使用 Firestore 和 Next.js for SEO 對數據進行分頁的最佳方式

按其他數據框對數據框列進行分組併計算聚合列的加權平均值

React:使用狀態對功能組件進行條件渲染 | 不是函數錯誤

如何創建條件語句來對這些數據進行排序並在找到數據時應用模板?

使用分類字符串對熊貓數據框進行分組

如何使用 head() 和 tail() 與 case_when 對數據進行分類

在數據框中使用嵌套的 if 條件

按兩列對熊貓數據框進行分組而不對其進行匯總

如何通過對多個變量進行分組來創建新的 Pandas 數據框?

如何根據字符串層次結構對 Pandas 數據框進行分組?

按列值對數據進行分組

使用時間戳對數據框進行切片

使用分區對 Kafka 數據進行分桶