如何更新熊猫数据帧中的单元格值


filename = r'C:Users91956DesktopFile.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)

数据帧df包含列tkltp列。

我想使用 tick 数据更改第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

我试图从上面的链接访问该页面,但它不存在。

我正在使用流光显示数据帧, 我希望看到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)

您可以使用.loc,第一个参数作为条件,第二个参数作为列名,如下所示:

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

页面应该存在,它对我有用 这是一个经典错误:使用 .loc

[] 而不是 [][]

最新更新