簡體   English   中英

如何更新 pandas dataframe 中的單元格值

[英]how to update a cell value in pandas dataframe

 filename = r'C:\Users\91956\Desktop\File.csv'
 df = pd.read_csv(filename)
 ss = WebSocket(FEED_TOKEN, CLIENT_CODE)
    

def on_tick(ws, tick):
      ltp = tick[0]['ltp']
      token = tick[0]['tk']
      df['ltp'][df.tk == token] = ltp
        
ss.on_ticks = on_tick
ss.connect()

st.write(df)

dataframe df包含列tkltp

我想使用刻度數據更改ltp列中的值,所以我正在這樣做,

df['ltp'][df.tk == token] = ltp

我得到了這個警告

A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  df['ltp'][df.tk == token] = ltp

我試圖從上面的鏈接訪問該頁面,但它不存在。

我正在使用 streamlit 顯示 dataframe,我希望看到ltp列的單元格中的值發生變化,但這不會發生

這意味着df['ltp'][df.tk == token] = ltp沒有更新df

這個怎么做?

更新:使用loc后,我收到此錯誤

   raise IndexingError(key) from e
pandas.core.indexing.IndexingError: ('ltp', 0      False
1      False
2      False
3      False
4      False
       ...
154    False
155    False
156    False
157    False
158    False
Name: tk, Length: 159, dtype: bool)

該頁面應該存在,它對我有用這是一個經典錯誤:use.loc[] 而不是 [][]

您可以使用.loc ,第一個參數作為條件,第二個參數作為列名,如下:

df.loc[df.tk == token, 'ltp'] = ltp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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