【问题标题】:How to get the maximum value from list type values in a column and create new column with maximum value in pandas dataframe如何从列中的列表类型值中获取最大值并在 pandas 数据框中创建具有最大值的新列
【发布时间】:2023-02-23 01:43:49
【问题描述】:

我有以下数据框

    import pandas as pd
    import numpy as np
    d = {'Cell':['A','B','C','D','E'],'D1':[5, 2, 2, 6,6], 'D2':[np.nan, 5, 6, np.nan,3], 'D3':[7,np.nan, 5, 5,np.nan], 'D6':[17, 3, np.nan,np.nan,2],'diff%':[np.nan,[40],[16.67],[16.67,50],[50,33,24]]}
    df = pd.DataFrame(d)

    Cell  D1   D2   D3    D6         diff%
0    A   5  NaN  7.0  17.0           NaN
1    B   2  5.0  NaN   3.0          [40]
2    C   2  6.0  5.0   NaN       [16.67]
3    D   6  NaN  5.0   NaN   [16.67, 50]
4    E   6  3.0  NaN   2.0  [50, 33, 24]
  1. 我想创建一个新列(max_diff%),在列表类型列(diff%)中有最大值

    下面是我想要的数据框

        Cell  D1   D2   D3    D6         diff% max_diff%
    0    A   5  NaN  7.0  17.0           NaN   NaN
    1    B   2  5.0  NaN   3.0          [40]   40
    2    C   2  6.0  5.0   NaN       [16.67]   16.67
    3    D   6  NaN  5.0   NaN   [16.67, 50]   50
    4    E   6  3.0  NaN   2.0  [50, 33, 24]]  50
    

    请让我知道对此有任何解决方案吗?

【问题讨论】:

    标签: python pandas list dataframe numpy


    【解决方案1】:

    numpy.max 应用于所需的列:

    df['max_diff%'] = df['diff%'].apply(np.max)
    print(df)
    

      Cell  D1   D2   D3    D6         diff%  max_diff%
    0    A   5  NaN  7.0  17.0           NaN        NaN
    1    B   2  5.0  NaN   3.0          [40]      40.00
    2    C   2  6.0  5.0   NaN       [16.67]      16.67
    3    D   6  NaN  5.0   NaN   [16.67, 50]      50.00
    4    E   6  3.0  NaN   2.0  [50, 33, 24]      50.00
    

    【讨论】:

      猜你喜欢
      • 2022-11-30
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      相关资源
      最近更新 更多