问题描述
像下面的 R 代码一样,如何在 Python 中简单地生成相同的数据表?
Genotype <- c(rep(c("CV1","CV2","CV3"),each=9))
Treatment <- c(rep(c("TR1","TR2","TR3"),each=3),rep(c("TR1",each=3))
Block <- c(rep(c("B1","B2","B3"),times=9))
yield <- c(rep("15",5),rep("18",rep("20",8),rep("14",7),rep ("21",2))
dataA<- data.frame (Genotype,Treatment,Block,yield)
dataA
这是我生成的 Python 代码,但我相信更简单的方法。你能告诉我如何使用 R 中的 rep()
编写一个简单的代码吗?
import pandas
from pandas import DataFrame
source={'Genotype':["CV1","CV1","CV3","CV3"],'Treatment':["TR1","TR1","TR3","TR3"],'Block':["B1","B3","B1","B3"],'Yield':[15,15,18,20,14,21,21]}
DataA=DataFrame(source)
DataA
永远感谢!!
解决方法
df = pd.DataFrame(
{
"Genotype": ["CV1"] * 9 + ["CV2"] * 9 + ["CV3"] * 9,"Treatment": (["TR1"] * 3 + ["TR2"] * 3 + ["TR3"] * 3) * 3,"Block": ["B1","B2","B3"] * 9,"yield": [15] * 5 + [18] * 5 + [20] * 8 + [14] * 7 + [21] * 2,}
)
print(df)
打印:
Genotype Treatment Block yield
0 CV1 TR1 B1 15
1 CV1 TR1 B2 15
2 CV1 TR1 B3 15
3 CV1 TR2 B1 15
4 CV1 TR2 B2 15
5 CV1 TR2 B3 18
6 CV1 TR3 B1 18
7 CV1 TR3 B2 18
8 CV1 TR3 B3 18
9 CV2 TR1 B1 18
10 CV2 TR1 B2 20
11 CV2 TR1 B3 20
12 CV2 TR2 B1 20
13 CV2 TR2 B2 20
14 CV2 TR2 B3 20
15 CV2 TR3 B1 20
16 CV2 TR3 B2 20
17 CV2 TR3 B3 20
18 CV3 TR1 B1 14
19 CV3 TR1 B2 14
20 CV3 TR1 B3 14
21 CV3 TR2 B1 14
22 CV3 TR2 B2 14
23 CV3 TR2 B3 14
24 CV3 TR3 B1 14
25 CV3 TR3 B2 21
26 CV3 TR3 B3 21
,
感谢大家的回答。我解决了并分享了代码。我刚开始学习 Python,我的编码非常基础。
import pandas as pd
from pandas import DataFrame
source = {"Genotype": ["CV1"]*9 + ["CV2"]*9 + ["CV3"]*9,"Treatment": (["TR1"]*3 + ["TR2"]*3 + ["TR3"]*3)*3,"B3"]*9,"yield": [15]* 5 + [18]* 5 + [20]* 8 + [14]* 7 + [21]* 2}
DataA=DataFrame(source)
DataA