Python,pandas:如何将一个系列附加到数据帧
发布时间:2020-12-20 11:06:40 所属栏目:Python 来源:网络整理
导读:我有以下数据帧df1: import pandas as pddata = {'name': ['Jason','Molly','Tina','Jake','Amy','Lisa','Fred'],'gender': ['m','f','m','m'],}df1 = pd.DataFrame(data,index = [1,2,3,4,5,6,7,8,9,10]) 我想创建一个包含一些标准和一些自定义汇总统计信
我有以下数据帧df1:
import pandas as pd data = {'name': ['Jason','Molly','Tina','Jake','Amy','Lisa','Fred'],'gender': ['m','f','m','m'],} df1 = pd.DataFrame(data,index = [1,2,3,4,5,6,7,8,9,10]) 我想创建一个包含一些标准和一些自定义汇总统计信息df2的表. df2 = df1.describe() df2.rename(index={'top':'mode'},inplace=True) df2.rename(index={'freq':'mode freq'},inplace=True) df2 DF2: gender name count 10 10 unique 2 7 mode f Molly mode freq 7 3 我想为第二种模式向df2追加一行,为第二种模式的频率追加一行: 例: gender name count 10 10 unique 2 7 mode f Molly mode freq 7 3 2nd mode m Lisa 2nd freq 3 2 我发现你可以得到第二种模式&这样做的频率: my_series for column in df1: my_series=df1[column].value_counts()[1:2] print(my_series) 但是如何将其附加到df2? 解决方法
有柜台
from collections import Counter def f(s): return pd.Series(Counter(s).most_common(2)[1],['mode2','mode2 freq']) df1.describe().rename(dict(top='mode1',freq='mode1 freq')).append(df1.apply(f)) name gender count 10 10 unique 7 2 mode1 Molly f mode1 freq 3 7 mode2 Lisa m mode2 freq 2 3 value_counts 没有Counter的同样的事情 def f(s): c = s.value_counts() return pd.Series([s.iat[1],s.index[1]],freq='mode1 freq')).append(df1.apply(f)) Numpy位 def f(s): f,u = pd.factorize(s) c = np.bincount(f) i = np.argpartition(c,-2)[-2] return pd.Series([u[i],c[i]],freq='mode1 freq')).append(df1.apply(f)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |