Python 3.x 如何获取以分号分隔的列的和值和计数

Python 3.x 如何获取以分号分隔的列的和值和计数,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个如下表,其中Value列的值用分号分隔,我需要第4列作为SUM,第5列作为COUNT。 COUNT是以分号分隔的数字计数,忽略空格 Number Number_SEQ Value 1 A1 NaN;NaN;NaN;NaN;NaN;1.5;-34.0;-34.9;6.0;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN 2 A2 NaN;NaN;NaN;NaN;NaN;NaN;NaN;-34.9;6.0;

我有一个如下表,其中Value列的值用分号分隔,我需要第4列作为SUM,第5列作为COUNT。 COUNT是以分号分隔的数字计数,忽略空格

Number  Number_SEQ  Value
     1          A1  NaN;NaN;NaN;NaN;NaN;1.5;-34.0;-34.9;6.0;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN
     2          A2  NaN;NaN;NaN;NaN;NaN;NaN;NaN;-34.9;6.0;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN
产出

Number  Number_SEQ    SUM  COUNT
     1          A1  -73.4      4
     2          A2  -28.9      2
给你:

pd.concat((df, df['Value'].str.split(';', expand=True)
                   .astype(float).T
                   .agg(['sum','count']).T
          ), axis=1)

让我们从对样本数据的一点修正(符号的变化)开始 (有些人)。为了获得预期结果,应:

   Number Number_SEQ  Value
0       1         A1  NaN;NaN;NaN;NaN;NaN;1.5;-34.0;-34.9;-6.0;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN
1       2         A2  NaN;NaN;NaN;NaN;NaN;NaN;NaN;-34.9;6.0;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN;NaN
定义以下功能:

def process(row):
    lst = row.Value.split(';')
    lst = list(map(lambda x: float(x), filter(lambda x: x != 'NaN', lst)))
    return pd.Series([row.Number, row.Number_SEQ, sum(lst), len(lst)],
        index=['Number', 'Number_SEQ', 'SUM', 'COUNT'])
然后按如下方式应用它:

result = df.apply(process, axis=1)
结果是:

   Number Number_SEQ   SUM  COUNT
0       1         A1 -73.4      4
1       2         A2 -28.9      2