我正在导入一个csv文件,该文件的列如下所示:
Col A = 5.4 (Text/Text/Text), 3.1 (Text/Text), 1.2 (Text/Text), 10.12 (Text)
我如何计算多少个项目的值大于3.1?
我尝试了以下代码:
data = (data['A']>3.1).value_counts()
但是,当然,我对float和string有问题。我不允许删除该文本。我只需要计算符合特定条件的行数即可。
答案 0 :(得分:0)
您可以使用csv模块和pathlib来实现这一点。
import csv
from pathlib import Path
def count(path: Path) -> int:
tot: list = []
with open(path, "r", newline="") as op:
reader = csv.reader(op, delimiter=",")
data = [line for line in reader]
for values in data:
for value in values:
if float(value) > 3.1:
tot.append(value)
return len(tot)
可以用Path("path/to/file.csv")
答案 1 :(得分:0)
第1步:创建一个数据框
import pandas as pd
import numpy as np
d = {'A': ["5.4 (Text/Text/Text)", "3.1 (Text/Text)", "1.2 (Text/Text)", "10.12 (Text)"]}
df = pd.DataFrame(data=d)
第2步:使用分割符分割文本和数字
df['B']=df['A'].apply(lambda x: x.split(" "))
第3步:分割号码
df['C'] = df['B'].apply(lambda x: x[0])
第4步:计算3.1以上的值
criteria = 3.1
(df['C'].astype(float)>criteria).sum()
第5步:计算低于或等于条件的值
(df['C'].astype(float)<=criteria).sum()