我想要如果条件成立,df[df["tg"] > 10然后df[df["tg"] < 32乘以五,否则除以二。但是,我收到以下错误
ValueError:DataFrame 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。
d = {'year': [2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001],
'day': [1, 2, 3, 4, 1, 2, 3, 4,],
'month': [1, 1, 1, 1, 2, 2, 2, 2],
'tg': [10, 11, 12, 13, 50, 21, -1, 23],
'rain': [1, 2, 3, 2, 4, 1, 2, 1]}
df = pd.DataFrame(data=d)
print(df)
[OUT]
year day month tg rain
0 2001 1 1 10 1
1 2001 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试将各种列添加到一起,rowSums但我遇到了一些问题。以下是列名列表:
colnames(No_Low_No_Intergenic_snpeff)
"CHROM" "POS" "REF" "ALT" "QUAL" "ANN.ALLELE" "ANN.EFFECT"
"ANN.IMPACT" "ANN.GENE" "ANN.GENEID" "ANN.FEATURE" "ANN.FEATUREID"
"ANN.HGVS_C" "ANN.HGVS_P" "ANN.ERRORS" "GEN.C02141.GT" "GEN.C00611.GT"
"GEN.C00633.GT" "GEN.C00634.GT" "GEN.C00644.GT" "GEN.C00647.GT" "GEN.C00648.GT"
"GEN.C00649.GT" "GEN.C00650.GT" "GEN.C00653.GT" "GEN.C00655.GT" "GEN.C00656.GT"
"GEN.C00657.GT" "GEN.C00659.GT" "GEN.C00682.GT" "GEN.C00705.GT" "GEN.C00707.GT"
"GEN.C00720.GT" "GEN.C00783.GT" "GEN.C01431.GT" "GEN.C01944.GT" "GEN.C01943.GT"
"GEN.C01403.GT" "GEN.C01158.GT" "GEN.C01157.GT" "GEN.C01156.GT" "GEN.C01033.GT"
"GEN.C00736.GT" "GEN.C00639.GT" "GEN.C99686.GT"
Run Code Online (Sandbox Code Playgroud)
我正在使用的GEN.Cxxxxx.GT所有列都带有标签,并且这些列中的所有值范围为 0-2。我试图对第 20:29 列和第 45 列求和,然后将这些值放在一个名为 的新列中controls:
No_Low_No_Intergenic_snpeff.scores$controls <- rowSums(No_Low_No_Intergenic_snpeff.scores[,20:29,45])
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行该命令时,出现以下错误:
Error in rowSums(No_Low_No_Intergenic_snpeff.scores[, 20:29, 45]) : 'x' must be numeric
Run Code Online (Sandbox Code Playgroud)
数据
str(No_Low_No_Intergenic_snpeff.scores)
'data.frame': 1000 obs. of …Run Code Online (Sandbox Code Playgroud)