编译 pandas 列多个 str 值作为输出列表并排除 NA
Compile pandas column multiple str values as output list and exclude NA
我有一个如下所示的数据框
df = [{"condition": "a", "runtimes": "1,15,2.0,nan"}, {"condition": "b", "runtimes": "51,75,1.0,NaN"}]
df = pd.DataFrame(df)
print(df)
我的objective是
a) 创建一个 output_list
- 这将 concat/append 所有 runtimes
列值并将其存储为列表
b) output_list
不应包含 NA
、nan
,也不应包含重复值
c) 列表中的所有值都应为 int
数据类型
我正在尝试类似下面的操作
for b in df.runtimes.tolist():
print(type(b))
for a in b.split(','):
print(int(a,base=10)) # it threw error here
ValueError: invalid literal for int() with base 10: '2.0'
我希望所有的runtimes
值都是int格式(只能是int数据类型)
我希望我的输出是一个 python 列表,如下所示
output_list = [1,2,15,51,75]
首先拆分值并使用 Series.explode
,如果不匹配则转换为带有错误值的数字,然后移动错误值、排序、转换为整数、删除重复项并最后转换为列表:
L = (pd.to_numeric(df.runtimes.str.split(',').explode(), errors='coerce')
.dropna()
.sort_values()
.astype(int)
.unique()
.tolist())
print (L)
[1, 2, 15, 51, 75]
或者如果可能的话转换为浮点数 pd.to_numeric
:
L = (df.runtimes.str.split(',')
.explode()
.astype(float)
.dropna()
.sort_values()
.astype(int)
.unique()
.tolist())
我有一个如下所示的数据框
df = [{"condition": "a", "runtimes": "1,15,2.0,nan"}, {"condition": "b", "runtimes": "51,75,1.0,NaN"}]
df = pd.DataFrame(df)
print(df)
我的objective是
a) 创建一个 output_list
- 这将 concat/append 所有 runtimes
列值并将其存储为列表
b) output_list
不应包含 NA
、nan
,也不应包含重复值
c) 列表中的所有值都应为 int
数据类型
我正在尝试类似下面的操作
for b in df.runtimes.tolist():
print(type(b))
for a in b.split(','):
print(int(a,base=10)) # it threw error here
ValueError: invalid literal for int() with base 10: '2.0'
我希望所有的runtimes
值都是int格式(只能是int数据类型)
我希望我的输出是一个 python 列表,如下所示
output_list = [1,2,15,51,75]
首先拆分值并使用 Series.explode
,如果不匹配则转换为带有错误值的数字,然后移动错误值、排序、转换为整数、删除重复项并最后转换为列表:
L = (pd.to_numeric(df.runtimes.str.split(',').explode(), errors='coerce')
.dropna()
.sort_values()
.astype(int)
.unique()
.tolist())
print (L)
[1, 2, 15, 51, 75]
或者如果可能的话转换为浮点数 pd.to_numeric
:
L = (df.runtimes.str.split(',')
.explode()
.astype(float)
.dropna()
.sort_values()
.astype(int)
.unique()
.tolist())