我正在嘗試使用入院和出院來計算醫院人口普查(特定日期醫院的患者人數)。人口普查 = 前一天的人口普查 入院人數 - 出院人數。
這是我寫的代碼:
# Calculate census
df['ICU census'] = 0
df['ICU census lag'] = df['ICU census'].shift(1)
df['ICU census'] = df['ICU census lag'] df['ICU admissions'] - df['ICU discharges']
問題在于,從某種意義上說,當人口普查發生變化時,人口普查的滯后不會更新,這不是動態的。有沒有辦法在沒有回圈的情況下做到這一點?
謝謝
uj5u.com熱心網友回復:
如果我理解正確,您會希望更改一列會更改 Pandas DataFrame 中的另一列。如果是這種情況,那么您必須[]像這樣多載Pandas DataFrame的括號運算子:
import pandas as pd
class MyDataFrame(pd.DataFrame):
def __init__(self, data, columns=None):
super().__init__(data=data, columns=columns)
def __setitem__(self, key, value):
if key == 'ICU census':
ret = super().__setitem__(key, value)
super().__setitem__('ICU census lag', self['ICU census'].shift(1))
return ret
else:
return super().__setitem__(key, value)
現在你可以像這樣初始化你的 DataFrame:
df = MyDataFrame(data=[[1,2,3],[4,5,6],[7,8,9]], columns=['ICU census','ICU census lag','ICU admissions'])
列印它:
print(df)
ICU census ICU census lag ICU admissions
0 1 2 3
1 4 5 6
2 7 8 9
修改ICU census并列印:
df['ICU census'] = 1
print(df)
ICU census ICU census lag ICU admissions
0 2 NaN 3
1 5 2.0 6
2 8 5.0 9
請注意,列ICU census和ICU census lag都已修改。
uj5u.com熱心網友回復:
使用 pandas 的主要目的是操作、探索和分析資料,因此跟蹤和更新資料不是您的最佳選擇,我建議使用關系資料庫(postgres),然后“如果需要”將資料匯出到 csv 檔案以大熊貓分析
uj5u.com熱心網友回復:
我不太明白這個問題,但我認為你要問的是:
你能在 Python 中找到一個行號嗎?
答案是:不幸的是你不能,但你可以使用while回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392722.html
