python-3.x 如何从 Dataframe 选择到字符串长度为特定大小的列表中

uttx8gqw  于 2022-12-30  发布在  Python
关注(0)|答案(2)|浏览(135)

我终于放弃了寻找一个漂亮的紧凑型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做我想做的事的最好方法是什么?

xjreopfe

xjreopfe1#

我将它重写为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]
但由于我没有更多的信息,这是我能想到的最好的。
如果你在问题中提供更多的数据,我相信我们能解决这个问题。

vmdwslir

vmdwslir2#

您需要使用.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)

输出:

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

注:

根据列的内容,您可能需要在提取列表之前将列类型转换为string,否则可能会出错。

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

相关问题