用重复值填充 pandas 数据框

Filling a pandas dataframe with repeating values

我在 R 中有这段代码

a <- c(NA)
a<- matrix(c(a), nrow = 80)
a<-as.data.frame(a)

a[ c(T,F,F,F), ] <- "aaa"
a[ c(F,T,F,F), ] <- "bbb"
a[ c(F,F,T,F), ] <- "ccc"
a[ c(F,F,F,T), ] <- "ddd"

如何在 python 中将其复制为 pandas 数据框?

str(a)

'data.frame': 80 obs. of 1 variable:

$ V1: chr "aaa" "bbb" "ccc" "ddd" ...

您可以使用 np.tile 并构建一个系列。

import pandas as pd
import numpy as np

s = pd.Series(np.tile(['aaa', 'bbb', 'ccc', 'ddd'], 20) )

print(s.shape) # size - 80 rows
(80,)

print(s.head(10)) # shows only the first 10 rows
0    aaa
1    bbb
2    ccc
3    ddd
4    aaa
5    bbb
6    ccc
7    ddd
8    aaa
9    bbb
dtype: object

如果你想要一个数据框,你会这样做:

df = pd.DataFrame({'V1' : np.tile(['aaa', 'bbb', 'ccc', 'ddd'], 20)})

print(df.head(10))
    V1
0  aaa
1  bbb
2  ccc
3  ddd
4  aaa
5  bbb
6  ccc
7  ddd
8  aaa
9  bbb

处理动态行:

vals = ['aaa', 'bbb', 'ccc', 'ddd', ...]
tiled_vals = np.tile(vals, (80 // len(vals)) + 1 )[:80] # tile and clip to 80

s = pd.Series(tiled_vals)

或者,

df = pd.DataFrame({'V1' : tiled_vals})

在Python中:

['aaa', 'bbb', 'ccc', 'ddd']*20

rep(c('aaa','bbb','ccc','ddd'),20)