我有一个pandas数据框,我可以选择一个我想看的列:
myForm <- "Species~Petal.Length"
class(myForm)
# [1] "character"
myForm <- as.formula(myForm)
class(myForm)
# [1] "formula"
myForm
# Species ~ Petal.Length
lda(formula=myForm, data=iris)
# Call:
# lda(myForm, data = iris)
# Prior probabilities of groups:
# setosa versicolor virginica
# 0.3333333 0.3333333 0.3333333
# Group means:
# Petal.Length
# setosa 1.462
# versicolor 4.260
# virginica 5.552
# Coefficients of linear discriminants:
# LD1
# Petal.Length 2.323774
如果我打印column_x,我会得到:
column_x = str(data_frame[4])
我想计算包含值AF1000g = 0.05或更少的行数。以及包含值AF1000g = 0.06或更高的行。
0 AF1000g=0.09
1 AF1000g=0.00
2 AF1000g=0.14
3 AF1000g=0.02
4 AF1000g=0.02
5 AF1000g=0.00
6 AF1000g=0.54
7 AF1000g=0.01
8 AF1000g=0.00
9 AF1000g=0.04
10 AF1000g=0.00
11 AF1000g=0.03
12 AF1000g=0.00
13 AF1000g=0.02
14 AF1000g=0.00
...
如果列中的值是包含字符串和数字内容的String,我如何计算此列中的这些值?
谢谢。
罗德里戈
答案 0 :(得分:1)
您可以使用apply
提取数值,并在那里进行计数:
vals = column_x.apply(lambda x: float(x.split('=')[1]))
print sum(vals <= 0.05) #number of rows with AF1000g=0.05 and less
print sum(vals >= 0.06) #number of rows with AF1000g=0.06 and greater
答案 1 :(得分:1)
上面的评论很有用。通常,您应该在分析之前专注于解析。
那就是说,这并不难。将pd.Series.str.extract与正则表达式一起使用,然后强制使用浮点数,然后对其执行操作。
floats = column_x.str.extract("^AF1000g=(.*)$").astype(float)
num_less = (vals <= 0.05).sum()
num_greater = (vals > 0.05).sum()
这利用了与vals
比较返回的布尔数组可以强制为0和1的事实。