繁体   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