亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

試圖找到一種方法來簡化我的代碼塊

試圖找到一種方法來簡化我的代碼塊

鴻蒙傳說 2021-10-12 17:42:25
我知道這不是最簡潔的代碼塊,正在尋找簡化它的方法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)*100a2 = lambda x: x/sum(ten)*100a3 = lambda x: x/sum(eleven)*100a4 = lambda x: x/sum(twelve)*100a5 = lambda x: x/sum(thirteen)*100a6 = lambda x: x/sum(fourteen)*100a7 = lambda x: x/sum(fifteen)*100a8 = lambda x: x/sum(sixteen)*100a9 = lambda x: x/sum(seventeen)*100a10 = lambda x: x/sum(eighteen)*100nine = 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()這樣做的目的是返回一個數據框,以百分比形式顯示給定年份中每個“標題”出現的次數。這是樣本輸入這是示例輸出
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

一般形式將是


ser = []

for year in my_names:

    ser.append(

        x/sum(fb_posts2[fb_posts2['year']==year].groupby('title').size()) * 100

或者,作為列表理解:


ser = [x/sum(fb_posts2[fb_posts2['year']==year].groupby('title').size()) * 100

    for year in my_names]

那應該能夠取代你的 3 組 10 重復行。


查看完整回答
反對 回復 2021-10-12
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

因此,我通過在 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)


查看完整回答
反對 回復 2021-10-12
  • 2 回答
  • 0 關注
  • 236 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號