如何更新 pandas 数据框中的单元格值
how to update a cell value in pandas dataframe
filename = r'C:\Users956\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
包含列 tk
和 ltp
.
我想使用报价数据更改列 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
我试图从上面 link 访问该页面,但它不存在。
我正在使用 streamlit 显示数据框,
我希望看到 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[] 而不是 [][]
可以使用.loc
,第一个参数为条件,第二个参数为列名,如下:
df.loc[df.tk == token, 'ltp'] = ltp
filename = r'C:\Users956\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
包含列 tk
和 ltp
.
我想使用报价数据更改列 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
我试图从上面 link 访问该页面,但它不存在。
我正在使用 streamlit 显示数据框,
我希望看到 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[] 而不是 [][]
可以使用.loc
,第一个参数为条件,第二个参数为列名,如下:
df.loc[df.tk == token, 'ltp'] = ltp