对包含多个数据的列进行排序

时间:2019-05-22 11:49:34

标签: python pandas

我正在导入一个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有问题。我不允许删除该文本。我只需要计算符合特定条件的行数即可。

2 个答案:

答案 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()