gpt4 book ai didi

python - 划分 python pandas DataFrame 的行

转载 作者:行者123 更新时间:2023-12-01 03:55:22 24 4
gpt4 key购买 nike

我有一个 pandas DataFrame df像这样

   mat  time
0 101 20
1 102 7
2 103 15

我需要划分行,以便时间列的值不高于 t=10拥有这样的东西

   mat  time
0 101 10
2 101 10
3 102 7
4 103 10
5 103 5

索引并不重要

如果我在这个 df 上使用 groupby('mat')['time'].sum() 我会得到原来的 df ,但我需要类似 groupby 函数的逆函数。

有什么办法可以得到 ungrouped条件为 time <= t 的 DataFrame ?

我试图在这里使用循环,但它有点“unPythonic”,有什么想法吗?

最佳答案

使用 apply 函数进行循环,直到所有值都小于 10。

def split_max_time(df):
new_df = df.copy()
while new_df.iloc[-1, -1] > 10:
temp = new_df.iloc[-1, -1]
new_df.iloc[-1, -1] = 10
new_df = pd.concat([new_df, new_df])
new_df.iloc[-1, -1] = temp - 10
return new_df


print df.groupby('mat', group_keys=False).apply(split_max_time)

mat time
0 101 10
0 101 10
1 102 7
2 103 10
2 103 5

关于python - 划分 python pandas DataFrame 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557485/

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