[英]Is there a more efficient or concise way to divide a df according to a list of indexes?
我正在尝试切片/划分以下 dataframe
df = pd.DataFrame(
{'time': [4, 10, 15, 6, 0, 20, 40, 11, 9, 12, 11, 25],
'value': [0, 0, 0, 50, 100, 0, 0, 70, 100, 0,100, 20]}
)
根据要拆分的索引列表:
[5, 7, 9]
列表的第一项和最后一项是 dataframe 的第一个和最后一个索引。 我试图得到以下四个数据帧作为结果(由三个给定的索引和原始df的开头和结尾定义)每个都分配给他们自己的变量:
time value
0 4 0
1 10 0
2 15 0
3 6 50
4 0 100
time value
5 20 0
6 40 0
time value
7 11 70
8 9 100
time value
9 12 0
10 11 100
11 25 20
我当前的解决方案给了我一个数据框列表,然后我可以通过列表索引手动分配给变量,但是代码有点复杂,我想知道是否有更简单/更有效的方法来做到这一点。
indexes = [5,7,9]
indexes.insert(0,0)
indexes.append(df.index[-1]+1)
i = 0
df_list = []
while i+1 < len(indexes):
df_list.append(df.iloc[indexes[i]:indexes[i+1]])
i += 1
这一切都源于我试图回答这个问题。 我敢肯定有一个更好的方法来回答这个问题,但我确实觉得应该有一种更简单的方法来进行我所想的这种切片。
你可以使用np.split 之类的
df_list = np.split(df, indexes)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.