讓我們假設我需要一個過濾器的“起始橋”。如何將列中所有值的布爾索引設為“真”?最小示例:-> 顯而易見。如果我有一個形狀為 (2, 2) 的 df,我想得到一個 (2,1) = True 的布爾索引。當然,2 行是可變的,列數也是可變的。import pandas as pdd = {'col1': [1, 2], 'col2': [3, 4]}df = pd.DataFrame(data=d)現在我有一個像“col1 中的值需要為 1”這樣的條件,所以我這樣做:boolean_index = df.loc[:,'col1']==1返回0 True1 FalseName: col1, dtype: bool但我想要的是不指定任何條件(例如不指定 boolean_index = df.loc[:,'col1'] ==1)并返回0 True1 TrueName: col1, dtype: bool我可能只是愚蠢到想不通?還是沒人問這個問題?
1 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
不完全清楚您在追求什么,但要獲得可以過濾的 True 列:
df = pd.DataFrame({'Col' : ['Something'] * 300})
df['FilterCol'] = df.Col.apply(lambda x : x == 'Something')
然后:
df[df['FilterCol']]
返回一切。在 lambda 函數中將 'Something' 更改為 'Nothing'(或其他任何東西,顯然),它是空的。
然后,您可以根據要過濾的內容更改 lambda 函數。
(編輯 - 基于現在有問題的示例 - 添加:
df.apply(lambda x : True)
到您的代碼末尾以獲得您正在尋找的答案。)
(編輯 2 - 來自新的最小示例:
import pandas as pd
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df.apply(lambda x : True, axis=1)
輸出是:
0 True
1 True
dtype: bool
它沒有像您的示例中那樣說明名稱和 dtype,但據我所知,這是如何實現的。
(最終編輯(希望:))
df.col1.apply(lambda x : True)
輸出我認為您正在尋找的答案。)
添加回答
舉報
0/150
提交
取消