[英]Pandas Dataframe .loc + update on a non-unique Datetime Index?
希望是一個非常簡單的,我只是還沒有設法找出解決方案。 我有一個帶有時間戳 (%Y-%m-%d) 索引的數據框,我希望能夠使用 .loc 在知道日期時間索引值的情況下更新單行。
我知道索引是非唯一的,這意味着有時我會得到不僅僅是我想要更新的行。 所以我在第二列上對數據框進行了排序,這樣我要更新的行將始終是該索引值的最后一行。
有問題的數據幀是一個更大的數據幀的子集副本,並且在不使用 .loc 的情況下設置值不起作用 - 因此我限制使用 .loc。
我的問題:有沒有辦法可以引用索引值的最后一行並更新它,純粹基於索引? 顯然,僅使用索引值將使用該索引更新所有行,argmax 似乎不適用於時間戳,盡管我可以臨時重新創建索引以使用我排序的另一列,但我寧願不使用這三步如果有直接的方法可以解決。
請參閱我下面的代碼以獲取示例數據框 - 我所追求的是一種僅使用 df['sort']=='d' 更新行的方法,我知道這將是索引的最后一個,僅基於如果可能,索引值。 提前謝謝了!
l1 = [datetime.today().date()] * 4
l2 = list(range(1,5))
l3 = ['a','b','c','d']
df= pd.DataFrame(list(zip(l1,l2,l3)),columns=['datetime','value','sort'])
df.set_index('datetime',inplace=True)
df
Out[1317]:
value sort
datetime
2021-10-22 1 a
2021-10-22 2 b
2021-10-22 3 c
2021-10-22 4 d
df.loc[df.index[-1].argmax()]
Traceback (most recent call last):
File "<ipython-input-1318-e1758b122814>", line 1, in <module>
df.loc[df.index[-1].argmax()]
AttributeError: 'datetime.date' object has no attribute 'argmax'
df.loc[df.index[-1],'value'] = 5
df
Out[1320]:
value sort
datetime
2021-10-22 5 a
2021-10-22 5 b
2021-10-22 5 c
2021-10-22 5 d
如果要更改數據框最后一行中特定列的值,可以嘗試以下代碼
df.iloc[-1,0] = 5
-1 -> 數據框的最后一行
0 -> 列“值”的索引
所以使用上面 Udaya 的答案,我需要的解決方案是df.iloc[-1, df.columns.get_loc('value')] = 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.