python:如何拆分列并向新列添加最大元素?

python:如何拆分列并向新列添加最大元素?,python,pandas,dataframe,Python,Pandas,Dataframe,我想拆分数据帧的一列,并将maximun值添加到一个新列中 import pandas as pd import numpy as np df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1']}) 输出: a 0 1,2 1 3 2 -1 3 8,9,1 应为: a maxA 0 1,2 2 1 3 3 2 -1 -1 3 8,9,1 9 如何解决它,

我想拆分数据帧的一列,并将maximun值添加到一个新列中

import pandas as pd
import numpy as np
df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1']})
输出:

       a
0    1,2
1      3
2     -1
3  8,9,1
应为:

       a  maxA
0    1,2     2
1      3     3
2     -1    -1
3  8,9,1     9

如何解决它,请?

没有熊猫,只有普通的python:

>>> foo = [[1,2],[3],[-1],[8,9,1]]
>>> [[x, max(x)] for x in foo]
[[[1, 2], 2], [[3], 3], [[-1], -1], [[8, 9, 1], 9]]

我必须假设你是指最大整数值

  • 您有混合类型
    str
    int
    。因此,从将所有内容转换为字符串开始
  • 然后使用
    int
    作为
    键来查找逗号分隔字符串的最大值
  • 转换为整数

  • 注意标记为4的行
    21111
    返回的最大值为
    111


    安装程序
    如果OP查找最大整数值,则这是不准确的。当最大值超过111时,它将返回21。
    df['maxA'] = df['a'].apply(lambda x:max(str(x).split(',')))
    
    df
    
           a  maxA
    0    1,2     2
    1      3     3
    2     -1    -1
    3  8,9,1     9
    
    df.assign(
        maxA=
        df['a'].astype(str).apply(lambda x: max(x.split(','), key=int)).astype(int)
    )
    
            a  maxA
    0     1,2     2
    1       3     3
    2      -1    -1
    3   8,9,1     9
    4  21,111   111
    
    df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1','21,111']})