簡體   English   中英

在 Pandas dataframe 中使用 IF function

[英]Using IF function in Pandas dataframe

我試圖從 csv 數據集中找到 OLDEST FEMALE,但我不知道如何找到。 我對 Python 和 Pandas 很陌生。我顯然不知道如何在這里使用 function。

import pandas as pd

df = pd.read_csv("people.csv", usecols=['gender', 'age'])

我試着用這樣的東西

print(df[df["gender"].isin(["F"])].df.age.max())

或者像這樣

if df[df["gender"].all(["F"])] :
print(df.age.max())

甚至試過這個

print(df.loc[df['gender'] == 'F'].max())

但這是在我發現最老的“M”與最老的“F”年齡相同之前

但仍然不知道如何找到最年長的女性

編輯:我必須從導入的數據集中找到最年長的女性,而不是創建一個。 謝謝你。

編輯 2:抱歉打擾了,我剛剛發現,我的 csv 中最老的 M 和我的 csv 中最老的 F 的年齡相同。這很尷尬

df = pd.DataFrame({'gender':['F', 'M', 'F', 'M','F', 'M'],'age': [12, 33, 43, 22, 18, 16]})

oldest_female = df.loc[df['gender'] == 'F'].max()

print(oldest_female['age'])

你可以試試這個。 首先按gender分組並獲得最大值。 然后從中獲取女性的age

import pandas as pd
df = pd.DataFrame([['F',20],['F',30], ['M',20]], columns=['gender', 'age'])

df = df.groupby('gender').max().reset_index()
print(df[df['gender'] == 'F'].iloc[0]['age'])

Output 在這個例子中是30

在這種情況下,您實際上不需要 if 語句。 見下文:

import numpy as np
import pandas as pd

df = pd.DataFrame({'gender': ['M', 'F', 'F','F','M'],
      'age': [99,12,45,98,23]})

# Result
print(df[df['gender'] == 'F']['age'].max())

這應該給你你正在尋找的東西。 另外,不要忘記在 if 語句之后縮進下一行。

要查找數據集中最年長女性的行,您可以將 dataframe 過濾為僅女性,使用 idxmax 查找索引:

df.loc[df.query('gender == "F"')['age'].idxmax()]

這將返回數據集中最大年齡為“F”的第一行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM