String pandas:获取具有字符串编号的列表的最大值

String pandas:获取具有字符串编号的列表的最大值,string,pandas,list,max,String,Pandas,List,Max,我有一个数据帧df=pd.dataframe({'xx':[[100','5','3'],['5','40'],['100']})并且我希望每个列表的最大值作为一个数字。所以我想得到这个: xx 0 100 1 40 2 100 有没有办法做到这一点?将值转换为整数并获取max值: df['xx'] = df['xx'].map(lambda x: max(int(y) for y in x)) 或使用列表理解: df['xx'] = [max(int(y) for y in x

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

xx
0   100
1   40
2   100

有没有办法做到这一点?

将值转换为整数并获取
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']]


添加另一个pandas方法,使用将列表系列分解为1个系列,然后使用convert to int,然后使用max按索引分组:

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

如果要使用,可以使用:

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

谢谢。有没有办法用assign实现这一点?我尝试了
df.assign(zz=lambda x:max(map(int,x.xx))
@corianne1234是的,您可以使用
df.assign
,如果这有用,您可以向上投票或接受,谢谢!我尝试了这一点(如上),但我得到一个错误
TypeError:int()参数必须是字符串、类似字节的对象或数字,而不是“list”
。所以它不工作。你从jupyter运行吗?@corianne1234如果你从jupyter运行,你只需要运行一次单元,你可能需要重新启动内核。这很好。这也适用于assign
df.assign(zz=lambda x:x.xx.explode().astype(int).max(level=0))
。谢谢lot@corianne1234很高兴我能帮忙:)再问一个问题,如果你有一个列表,其中有一个非数值,你能把它设置为np.nan吗?可能是np.where()?@corianne1234在找到max之前?然后:
pd.to_numeric(df['xx'].explode(),errors='concurve').max(level=0)。astype(int)
?如果max是一个float,则省略
astype(int)
perfect,是的。谢谢
df['max_xx'] = df['xx'].apply(lambda x: max(map(int, x)))
df['max_xx']
0    100
1     40
2    100
df.assign(max_xx=lambda x: [max(map(int, l)) for l  in x.xx])