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 berisi kolom tk dan dan ltp.

Saya ingin mengubah nilai di kolom ltp, menggunakan data centang, jadi saya melakukan ini,

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

Saya mendapatkan waring ini

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

Saya mencoba mengunjungi halaman dari tautan di atas, tetapi tidak ada.

Saya menampilkan kerangka data menggunakan streamlit, dan saya berharap untuk melihat nilai dalam sel kolom ltp berubah tapi itu tidak terjadi

Ini berarti df['ltp'][df.tk == token] = ltp tidak memperbarui df,

Bagaimana cara melakukannya?

perbarui: setelah menggunakan loc, saya mendapatkan kesalahan ini

   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)
0
Akshad Patil 28 Mei 2021, 11:15

2 jawaban

Jawaban Terbaik

Halaman harus ada, ini berfungsi untuk saya Ini adalah kesalahan klasik: gunakan .loc[] alih-alih [][]

0
elle.delle 28 Mei 2021, 08:19