[英]Pandas: Aggregating lists in dataframe
假設我有以下數據框:
VehID Material JobNo
0 10000 5005 [1, 2]
1 10000 5100 [1, 2, 4, 5, 6]
2 10001 5222 [2, 3, 4]
3 10001 5888 [1, 3]
我想提出“ JobNo”中的列表元素以連續方式出現的實例。 例如:
VehID Material JobNo Len
0 10000 5005 [1, 2] 2
1 10000 5100 [1, 2] 2
2 10000 5100 [5, 6] 2
3 10001 5222 [2, 3, 4] 3
有人對此有一個好的解決方案嗎? 任何幫助將非常感激。 提前致謝!
使用numpy.diff
和numpy.split
分解不numpy.split
列表
def split_jobs(x):
return np.split(x, np.where(np.append(False, np.diff(x) != 1))[0])
j = df.JobNo.apply(split_jobs)
l1 = j.str.len()
slc = np.arange(len(df)).repeat(l1)
d1 = pd.DataFrame(dict(
VehID=df.VehID.values[slc],
Material=df.Material.values[slc],
JobNo=list(chain(*j.tolist()))
))[df.columns.tolist()]
d1[d1.JobNo.str.len() > 1]
VehID Material JobNo
0 10000 5005 [1, 2]
1 10000 5100 [1, 2]
2 10000 5100 [4, 5, 6]
3 10001 5222 [2, 3, 4]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.