如何解决使用 .at 赋值时出现 ValueError
我正在尝试运行脚本来定义一些变量。但是,我收到一个奇怪的错误,我不确定是什么原因造成的。脚本如下所示。
def get_prev_order(df,details_df):
df.sort_values(['machine_id','start_time'],inplace=True)
df['previous_order'] = 0
for i in range(1,len(df)):
if df.at[i,'machine_id'] == df.at[i-1,'machine_id']:
print(df.at[i-1,'order_id'])
print(df.at[i,'previous_order'])
df.at[i,'previous_order'] = df.at[i-1,'order_id']
df.at[i,'previous_product'] = details_df.at[df.at[i-1,'order_id'],'product_id']
return df
get_prev_order(df,details_df)
由于某种原因,打印语句没有给出错误并且工作正常,但是当我尝试使用 .at 来分配一个值时,它给出了这个错误:
P130988818
0
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-d6ad3b0ef394> in <module>
25
26
---> 27 get_prev_order(df,details_df)
<ipython-input-7-d6ad3b0ef394> in get_prev_order(df,details_df)
15 print(df.at[i,'previous_order'])
16
---> 17 df.at[i,'order_id']
18 df.at[i,'product_id']
19
~\Anaconda3\envs\SQLite 3\lib\site-packages\pandas\core\indexing.py in __setitem__(self,key,value)
2087 return
2088
-> 2089 return super().__setitem__(key,value)
2090
2091
~\Anaconda3\envs\SQLite 3\lib\site-packages\pandas\core\indexing.py in __setitem__(self,value)
2038 raise ValueError("Not enough indexers for scalar access (setting)!")
2039
-> 2040 self.obj._set_value(*key,value=value,takeable=self._takeable)
2041
2042
~\Anaconda3\envs\SQLite 3\lib\site-packages\pandas\core\frame.py in _set_value(self,index,col,value,takeable)
3149 validate_numeric_casting(series.dtype,value)
3150
-> 3151 series._values[loc] = value
3152 # Note: trying to use series._set_value breaks tests in
3153 # tests.frame.indexing.test_indexing and tests.indexing.test_partial
ValueError: invalid literal for int() with base 10: 'P130988818'
有谁知道是什么导致了这个错误?我以前从未见过。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。