簡體   English   中英

使用pandas重復數據框中的項目

[英]Repeating items in a data frame using pandas

我有以下dataFrame:

id  z2  z3  z4  
1   2   a   fine 
2   7   b   good
3   9   c   delay
4   30  d   cold

我將通過重復行中的每個項目來生成數據框,除了列z4中的項目(不應重復)。 我怎么能用python和pandas做到這一點。

輸出應該是這樣的:

id  z1  z3  z4
1   2   a   fine 
1   2   a   
1   2   a   
2   7   b   good
2   7   b   
2   7   b   
3   9   c   delay
3   9   c   
3   9   c   
4   30  d   cold
4   30  d   
4   30  d   

另一種方法是使用索引:請注意, df.iloc[[0, 1, 2, 3]*2, :3]將為您提供前三列的兩個副本。

然后可以將其附加到原始df 刪除NA 然后對索引值進行排序並重置索引(刪除舊索引)。 所有這些都可以鏈接:

df.append(df.iloc[[0, 1, 2, 3]*2, :3]).fillna('').sort_index().reset_index(drop=True)

產生:

    id  z2 z3     z4
0    1   2  a   fine
1    1   2  a       
2    1   2  a       
3    2   7  b   good
4    2   7  b       
5    2   7  b       
6    3   9  c  delay
7    3   9  c       
8    3   9  c       
9    4  30  d   cold
10   4  30  d       
11   4  30  d

groupbyapply會做的伎倆:

def func(group):
    copy = group.copy()
    copy['z4'] = ""
    return pd.concat((group, copy, copy))

df.groupby('id').apply(func).reset_index(drop=True)


    id  z2 z3     z4
0    1   2  a   fine
1    1   2  a       
2    1   2  a       
3    2   7  b   good
4    2   7  b       
5    2   7  b       
6    3   9  c  delay
7    3   9  c       
8    3   9  c       
9    4  30  d   cold
10   4  30  d       
11   4  30  d       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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