簡體   English   中英

Pandas Dataframe .loc + 更新非唯一日期時間索引?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM