Python:如何拆分列并将最大元素添加到新列?

时间:2018-09-02 03:49:43

标签: python pandas dataframe

我想拆分数据框的一列,然后将maximun值添加到新列中。

(format "%,05.2f" (BigDecimal. "9999999999999999.12")) => "9,999,999,999,999,999.12"
(format "%,05.2f" (bigdec      "9999999999999999.12")) => "9,999,999,999,999,999.12"

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

Output:

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

Expected:

请问如何解决?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我必须假设你的意思是最大整数值。

  1. 您混合使用了strint类型。因此,首先将所有内容转换为字符串。
  2. 然后使用int作为key
  3. ,找到用逗号分隔的字符串的最大值。
  4. 转换为整数

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

记下标记为4的行。21,111最多返回111


设置

df=pd.DataFrame({'a':['1,2',3,-1,'8,9,1','21,111']})

答案 2 :(得分:0)

没有熊猫,只是普通的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]]