python - 试图找到一种方法来简化我的代码块
问题描述
我知道这不是最简洁的代码块并正在寻找简化它的方法
nine = fb_posts2[fb_posts2['year']==2009].groupby('title').size()
ten = fb_posts2[fb_posts2['year']==2010].groupby('title').size()
eleven = fb_posts2[fb_posts2['year']==2011].groupby('title').size()
twelve = fb_posts2[fb_posts2['year']==2012].groupby('title').size()
thirteen = fb_posts2[fb_posts2['year']==2013].groupby('title').size()
fourteen = fb_posts2[fb_posts2['year']==2014].groupby('title').size()
fifteen = fb_posts2[fb_posts2['year']==2015].groupby('title').size()
sixteen = fb_posts2[fb_posts2['year']==2016].groupby('title').size()
seventeen = fb_posts2[fb_posts2['year']==2017].groupby('title').size()
eighteen = fb_posts2[fb_posts2['year']==2018].groupby('title').size()
a1 = lambda x: x/sum(nine)*100
a2 = lambda x: x/sum(ten)*100
a3 = lambda x: x/sum(eleven)*100
a4 = lambda x: x/sum(twelve)*100
a5 = lambda x: x/sum(thirteen)*100
a6 = lambda x: x/sum(fourteen)*100
a7 = lambda x: x/sum(fifteen)*100
a8 = lambda x: x/sum(sixteen)*100
a9 = lambda x: x/sum(seventeen)*100
a10 = lambda x: x/sum(eighteen)*100
nine = a1(nine)
ten = a2(ten)
eleven = a3(eleven)
twelve = a4(twelve)
thirteen = a5(thirteen)
fourteen = a6(fourteen)
fifteen = a7(fifteen)
sixteen = a8(sixteen)
seventeen = a9(seventeen)
eighteen = a10(eighteen)
my_names = [2009,2010,2011,2012,2013,2014,2015,2016,2017,2018]
cols = ['link', 'post','shared','timeline','status']
ser = [nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eighteen]
df = pd.concat(ser, axis=1, keys=my_names)
df[2009].fillna(0, inplace=True)
df[2011].fillna(0, inplace=True)
df[2012].fillna(0, inplace=True)
df = df.transpose()
这样做的目的是返回一个数据框,以百分比形式显示每个“标题”在给定年份出现的次数。
解决方案
因此,我通过在 2009-2018 年的列表中运行 for 循环并应用函数将每个列表中的每个项目除以每个列表中的总计数并将其乘以 100,然后使用 pd.DataFrame 创建来简化此代码一个数据框并指定我将使用的索引名称
a = [x/sum(x)*100 for x in [nine,ten,eleven,twelve,thirteen,fourteen,fifteen,sixteen,seventeen,eighteen]]
pd.DataFrame(a, index= my_names)
推荐阅读
- c# - Xamarin 网格以适应整个屏幕错误循环
- laravel - 如何编写基于条件的查询?
- influxdb - 使用 InfluxDB 将计数除以计数
- php - 如何插入ID +1并获取最后一个ID?
- qt - 如何从 NSApplication 事件循环中启动 Go 的 main 函数?
- java - 使用返回语句解析堆栈
- javascript - 出现错误 - 如果对上面的列使用非字符串访问器,则需要列 id - React
- python - Python 脚本:字符 1 等于字符 n
- python - 使用 colab 时没有这样的文件或目录 'nltk_data/corpora/stopwords/English'
- concurrency - 如何让 lambda 保持活动状态以听取其他 lambda 的结果