大熊猫:获取包含字符串编号的列表的最大值

时间:2020-03-16 10:26:56

标签: string pandas list max

我有一个数据框df=pd.DataFrame({'xx':[['100','5','3'], ['5','40'], ['100']]}),我希望将每个列表的最大值作为一个数字。所以我想得到这个:

xx
0   100
1   40
2   100

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

将值转换为整数并获得max值:

df['xx'] = df['xx'].map(lambda x: max(int(y) for y in x))

或使用列表理解:

df['xx'] = [max(int(y) for y in x) for x in df['xx']]

print(df)
    xx
0  100
1   40
2  100

答案 1 :(得分:1)

使用series.explode添加另一种pandas方法将一系列列表分解为1个序列,然后使用series.astype转换为int,然后采用按索引分组的最大值:

df['max_col'] = df['xx'].explode().astype(int).max(level=0)

#or:-> df['xx'].explode().astype(int).groupby(level=0).max()

0    100
1     40
2    100

答案 2 :(得分:0)

您可以使用pandas.Series.apply

df['max_xx'] = df['xx'].apply(lambda x: max(map(int, x)))
df['max_xx']

输出:

0    100
1     40
2    100

如果您想使用pandas.DataFrame.assign,可以使用:

df.assign(max_xx=lambda x: [max(map(int, l)) for l  in x.xx])