Python 3.x 如何获取以分号分隔的列的和值和计数
我有一个如下表,其中Value列的值用分号分隔,我需要第4列作为SUM,第5列作为COUNT。 COUNT是以分号分隔的数字计数,忽略空格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;
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