[問題] Pandas依條件新增欄位

作者: liquidbox (樹枝擺擺)   2020-06-23 18:45:40
各位好,
我從公開資訊觀測站抓下來各家公司的財報,
但在季度的損益表中,有時候官網只提供全年數據,不提供單季數據
我必須在抓下來後自己手動將第四季的數據減去第一到三季的數據,
以求得第四季單季數據
但有時一家公司某年某季可能出現資料缺漏,就是四季缺了一兩季這樣
這些筆數必須跳過不計
我的寫法是這樣,
想請問有沒有更精簡一點的寫法,謝謝
def eval_Q4(row):
if row['Q1'] is not None and \
row['Q2'] is not None and \
row['Q3'] is not None and \
row['full_year'] is not None:
Q4 = row['full_year'] - row['Q3'] - row['Q2'] - row['Q1']
return Q4
df['Q4'] = df.apply(eval_Q4,axis=1)
作者: roccqqck (ccqq)   2020-06-23 18:47:00
追求精簡 別人看不懂又有何意義用df.loc[ (df[‘a’]==20) & (df[‘b’]==30)]類似這種方式
作者: liquidbox (樹枝擺擺)   2020-06-23 19:15:00
瞭解,謝謝分享
作者: sherees (ShaunTheSheep)   2020-06-24 10:08:00
我覺得原文的寫法比較好閱讀
作者: Czero (悠閒)   2020-06-24 19:29:00
追求精簡也沒有不好吧..另一種寫法給你參考,可以用df[‘q4’]=numpy.where (condition, yes..., no...)
作者: roccqqck (ccqq)   2020-06-25 00:11:00
精簡 要更好閱讀 十年後自己還看得懂 別人看得懂如果不好懂的寫法 至少要這種寫法 跑得更快

Links booklink

Contact Us: admin [ a t ] ucptt.com