簡體   English   中英

根據數字和組ID擴展熊貓數據框行(Python 3)。

[英]Expanding pandas Data Frame rows based on number and group ID (Python 3).

我一直在努力尋找一種基於預定數字和分組變量(id)擴展/克隆觀察行的方法。 對於上下文,這是使用pandas和numpy(python3)的示例數據幀。

df = pd.DataFrame([[1, 15], [2, 20]], columns = ['id', 'num'])

df
Out[54]:
  id  num
0   1   15
1   2   20 

我想通過基於其ID組的“ num”變量中給出的數字來擴展/克隆行。 在這種情況下,我想要id = 1的15行和id = 2的20行。這可能是一個簡單的問題,但是我正在努力進行這項工作。 我一直在搞亂reindex和np.repeat,但是概念上的部分對我來說不太合適。

在R中,我使用了splitstackshape包中的expandRows函數,它看起來像這樣:

library(splitstackshape)

df <- data.frame(id = c(1, 2), num = c(15, 20))


df
  id num
1  1  15
2  2  20


df2 <- expandRows(df, "num", drop = FALSE)
df2
     id num
1     1  15
1.1   1  15
1.2   1  15
1.3   1  15
1.4   1  15
1.5   1  15
1.6   1  15
1.7   1  15
1.8   1  15
1.9   1  15
1.10  1  15
1.11  1  15
1.12  1  15
1.13  1  15
1.14  1  15
2     2  20
2.1   2  20
2.2   2  20
2.3   2  20
2.4   2  20
2.5   2  20
2.6   2  20
2.7   2  20
2.8   2  20
2.9   2  20
2.10  2  20
2.11  2  20
2.12  2  20
2.13  2  20
2.14  2  20
2.15  2  20
2.16  2  20
2.17  2  20
2.18  2  20
2.19  2  20

再次,如果這是一個愚蠢的問題,對不起,請先感謝您的幫助。

我無法復制您的索引,但實際上可以很容易地使用np.repeat復制您的值。

v = df.values
df = pd.DataFrame(v.repeat(v[:, -1], axis=0), columns=df.columns)

如果您想要確切的索引(盡管我看不到為什么groupby ),則需要進行groupby操作-

def f(x):
    return x.astype(str) + '.' + np.arange(len(x)).astype(str)

idx = df.groupby('id').id.apply(f).values

idx分配給df的索引-

df.index = idx

暫無
暫無

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

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