首页 > 解决方案 > 如何使用熊猫数据框的if条件

问题描述

我已经构建了我正在使用 csv 的应用程序,并且我正在使用这些条件,但它们非常慢。我听说使用 pandas 速度很快,我只想将此代码转换为 pandas,我搜索了很多但不知道如何在 pandas 中使用 if else 条件

with open("alkhidmat.txt", newline="", encoding="utf-8") as f:
    reader = DictReader(f, delimiter=";")

for index, row in enumerate(reader):
    if (
        search_uc == "All"
        and row["Food Package"] == food
        and (row["Category"] == check_category or check_category == "All")
        and (row["Gender"] == check_gender or check_gender == "All")
    ):
        pass

这是 csv 文件中的数据

Registration No;Person Name;Father Name;Gender;Persons;Union Council;Address;Date;CNIC;Category;Occupation;Mobile No;Food Package
1;گل محمد خان;محمد اقبال;مرد;7;Kholian Bala;بلڈ ھیر;04/08/2020;1330221680055;دہیاڑی دار مزدور;مزدری;3121582459;Retain

我让它更简单这是我在代码中某处使用的条件

df.loc[df["CNIC"] == cnic_no, "Food Package"] = "Retain"

这个条件是如果有 cnic_no == key["CNIC"] 的任何条目然后更改食品包以保留现在我只想要一个简单的条件

if df["CNIC"]==cnic_no

如何使用 pandas 使用此条件

标签: pythonpandas

解决方案


可能将DataFrame转换为numpy 数组会起作用。

import pandas as pd

# read data from csv file
data = pd.read_csv("Data.csv")
print(type(data))
print(data) # will print the data in dataframe
data = data.values

print("---------")

for row in data:
    row_length = len(row)
    for i in range(row_length):
        if row[i] == "Salman":
            print(row)
输出:
<class 'pandas.core.frame.DataFrame'>
     Name  Age Gender
0  Deepak   24   Male
1    Tony   45   Male
2  Salman   50   Male
---------
['Salman' 50 'Male']

推荐阅读