簡體   English   中英

如何將 select 從 dataframe 轉換為字符串長度為特定大小的列表

[英]how to select from a dataframe into a list where the length of the string is a certain size

我終於放棄了尋找一個不錯的緊湊型 pandas 答案並這樣做了:

states_list = self.activities_df["park_states"].unique()
for state in states_list:
    if len(state) == 2:
        distinct_states.append(state)

我嘗試使用 pandas 執行此操作的所有其他方法均無效。 我試過這種邏輯:

states_list = df[df.column_name.str.len() == 2]
distinct_states = states_list['column_name']

我試過這種邏輯:

list = df[(df['col_1'].str.len() == 2)]

我已經嘗試了多種其他方法以及上述方法的許多不同組合,但語法不正確。

使用 pandas 做我想做的事情的最好方法是什么?

我會將其重寫為 listcomp if 語句,語法如下my_variable = [x for x in iterable if condition]

sates_list = [distinct_states.append(state) for state in self.activities_df["park_states"].unique() if len(state) == 2]

但是由於我沒有更多信息,所以這是我能想到的最好的信息。

如果您在問題中提供更多數據,我相信我們可以解決。

您需要使用.loc

my_list = df.loc[df['col_1'].str.len() == 2, 'col_1'].values.tolist()

例如:

import pandas as pd

df = pd.DataFrame({'col_1':['a','ab','ac','abc','acb','ad']})

length_to_find = 2
my_list = df.loc[df['col_1'].str.len() == length_to_find, 'col_1'].values.tolist()

print(my_list)

Output:

['ab', 'ac', 'ad']

筆記:

根據列的內容,您可能需要在提取列表之前將列類型轉換為字符串,否則最終可能會出錯。

df['col_1'] = df['col_1'].astype('str')

暫無
暫無

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

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