1
私はgroupbyの結果のすべての行を操作しようとしています。私は、各グループにダース以上の異なる「タスク」(、B、C、D、... z)を持っている場合を除きpandas groupbyの複数行で操作する
import pandas as pd
import numpy as np
def tdiff(dff):
# return(dff[dff.task.eq('d')].start - dff[dff.task.ne('d')].end)
return(dff[dff.task.eq('d')].start - dff.end)
a = []
p = 0
while p < 6:
i = 0
while i < 4:
a.insert(i,p)
i = i + 1
p = p + 1
d={'task':pd.Series(6*['a','b','c','d'],name='task'),
'jobid':pd.Series(a),
'start':pd.Series(np.random.randn(24)),
'end':pd.Series(np.random.randn(24))}
df = pd.DataFrame(d)
print(df)
dt = df.groupby('jobid').apply(tdiff)
dt.name='tdiff'
print(type(dt))
print(dt)
: は基本的に私は、次のようなものを持っています。そして、すべてのグループがタスク 'd'が保証されていることを除いて、すべてのタスクを保証するわけではありません。タスク 'd'の横に少なくとも1つのタスクが追加されます。
各GROUPBY結果では、私はd.startおよび他のすべてのタスクの終わりの違いを取得したいです。 どうすればいいですか?
私は適用関数を試しましたが、それは系列を返すようです。しかし、私は 'd'以外のすべてのNaNを取得します。私は、各グループの他のすべてのタスクの「開始」値からd.endを減算する方法がわからないと思います。
ありがとうございました!