[英]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)
['ab', 'ac', 'ad']
根据列的内容,您可能需要在提取列表之前将列类型转换为字符串,否则最终可能会出错。
df['col_1'] = df['col_1'].astype('str')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.