[英]How to generate a list of ranges to subset rows from pandas dataframe?
我想根據列表生成一個范圍列表,以從數據幀中對行進行子集。
import numpy as np
import pandas as pd
start_index = [10,20,30]
end_index = [15,25,35]
range_list = [10:15, 20:25, 30:35]
# assume df is a dataframe with 50 rows
df = df.loc[np.r_range_list,:]
如何從 start_index 和 end_index 生成 range_list? 歡迎任何建議!
將zip
與list
用於元組列表:
range_list = list(zip(start_index, end_index))
print (range_list)
[(10, 15), (20, 25), (30, 35)]
然后使用列表理解進行過濾:
dfs = [df.loc[s:e] for s, e in range_list]
如果想要一個大的 DataFrame 添加concat
:
dfbig = pd.concat(dfs)
一起,將zip
對象轉換為列表是沒有必要的:
dfbig = pd.concat([df.loc[s:e] for s, e in zip(start_index, end_index)])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.