第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 if 語句對 df 進行子集 - Pandas

使用 if 語句對 df 進行子集 - Pandas

動漫人物 2022-04-27 15:59:11
我希望df使用if語句創(chuàng)建并返回子集。具體來說,對于下面的代碼,我有兩組不同的值。我要返回的df值將根據(jù)這些值之一而有所不同。使用下面的代碼,具體值將在normal和內(nèi)different。中的值place將決定如何對df進行子集化。下面是我的嘗試。in 中的值place永遠只是一個值,因此它不會完全匹配列表。df當place這些列表中的值等于單個值時,是否可以返回?我希望返回df1以用于后續(xù)任務(wù)。import pandas as pddf = pd.DataFrame({    'period' : [1.0, 1.0, 2.0, 2.0, 3.0, 4.0, 5.0, 7.0, 7.0, 8.0, 9.0],                                    })place = 'a'normal = ['a','b']different = ['v','w','x','y','z']different_subset_start = 2normal_subset_start = 4subset_end = 8for val in df:    if place in different:        print('place is different')        df1 = df[(df['period'] >= different_subset_start) & (df['period'] <= subset_end)].drop_duplicates(subset = 'period')        return df1    elif place in normal:        print('place is normal')        df1 = df[(df['period'] >= normal_subset_start) & (df['period'] <= subset_end)].drop_duplicates(subset = 'period')        return df1    else:        print('Incorrect input for Day. Day Floater could not be scheduled. Please check input value')    return打?。╠f1)預(yù)期的輸出將返回df1以供以后使用。   period2     2.04     3.05     4.06     5.07     7.09     8.0
查看完整描述

2 回答

?
素胚勾勒不出你

TA貢獻1827條經(jīng)驗 獲得超9個贊

要檢查一個對象是否在某物中而不是檢查它是否等于某物,請使用in.


if place in different:

同樣地


elif place in normal:

編輯:


如果你把它變成一個函數(shù),它應(yīng)該是這樣的。基本上,您只需要做一些def my_function_name(arguments):事情,然后縮進其余代碼,使其屬于該函數(shù)。像這樣:


import pandas as pd


def get_subset(df, place):

    normal = ['a','b']

    different = ['v','w','x','y','z']


    different_subset_start = 2

    normal_subset_start = 4

    subset_end = 8


    if place in different:

        df1 = df[(df['period'] >= different_subset_start) & (df['period'] <= subset_end)].drop_duplicates(subset = 'period')

    elif place in normal:

        df1 = df[(df['period'] >= normal_subset_start) & (df['period'] <= subset_end)].drop_duplicates(subset = 'period')

    else:

        df1 = None

    return df1


df = pd.DataFrame({

    'period' : [1.0, 1.0, 2.0, 2.0, 3.0, 4.0, 5.0, 7.0, 7.0, 8.0, 9.0],                             

    })


place = 'a'


print(get_subset(df, place))


查看完整回答
反對 回復(fù) 2022-04-27
?
呼如林

TA貢獻1798條經(jīng)驗 獲得超3個贊

看看for val in df:你的代碼。這樣的結(jié)構(gòu)很奇怪,因為您不使用val變量。


將代碼的最后一個片段更改為如下所示:


def fn():

    if place in different:

        print('place is different')

        return df[df.period.between(different_subset_start, subset_end)]\

            .drop_duplicates(subset='period')

    elif place in normal:

        print('place is normal')

        return df[df.period.between(normal_subset_start, subset_end)]\

            .drop_duplicates(subset = 'period')

    else:

        print('Incorrect input for place. Please check value')

在您的情況下subset = 'period'是多余的,因為period是 DataFrame 中的唯一列。


也不需要最后一次返回。如果函數(shù)執(zhí)行到代碼末尾,它會返回而不返回任何值。


還有一個細節(jié):如果您的DataFrame有一個列,那么一個Series就足夠了?


查看完整回答
反對 回復(fù) 2022-04-27
  • 2 回答
  • 0 關(guān)注
  • 223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號