簡體   English   中英

熊貓:匯總數據框中的列表

[英]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.diffnumpy.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM