python - Pandas Dataframe/Python:如何在 python 的每次迭代中使用 for 循环更新数据框单元格值?
问题描述
我有一个带有 2 列(UserId,RandNo)的熊猫数据框。在此 UserId 中具有 10 行的值,如下所示
现在,我通过 for 循环填充 RandNo 列,如下所示。
import pandas as pd
import random
df=pd.read_csv('df_sto.csv', skipinitialspace=True)
rand=0
for index, row in df.iterrows():
try:
rand=random.randint(0,100)
df.at[index, 'RandNo'] = rand
except Exception as e:
print(e)
df.to_csv("df_sto1.csv", sep=',')
在这里,我仅在df_sto1.csv文件中获取更新值,更新值在df_sto.csv中不受影响。
如果数据框行很大并且如果在 df.iterrows() 中更新了 95% 的行后 for 循环遇到任何问题:for 'df_sto.csv ' 然后我想从 0% 本身重复该过程(从第 0 行开始本身)。为了避免这个问题,我想为每次循环迭代本身更新“df_sto.csv”的数据框,而不是通过 df.to_csv ("df_sto1.csv", sep=',')
指导我在每次迭代本身中使用 for 循环更新数据框单元格值。提前致谢。
解决方案
我不认为 try 块是必要的,但如果你坚持使用它,也许操作不仅仅是分配随机数,那么将它包装在一个函数中怎么样?
import pandas as pd
import random
df=pd.read_csv('df_sto.csv', skipinitialspace=True)
copy_df = df.copy()
def update_df(frame):
for index, row in frame.iterrows():
rand=random.randint(0,100)
frame.at[index, 'RandNo'] = rand
return frame
status = 0
while status == 0:
try:
copy_df = update_df(copy_df)
status = 1
except Exception as e:
copy_df = df
print(e)
df = copy_df
df.to_csv("df_sto1.csv", sep=',')
推荐阅读
- ruby-on-rails - 如何使用 Rails 中的序列化程序将深度嵌套的关联渲染到 json?
- mongodb - 在 MongoDB 字段中解码 base64
- gwt - GWT History.replaceItem 在编译模式下表现奇怪,但在 superdev 中工作正常
- java - 即使声明了类,在java中也找不到错误
- windows - 如何通过命令提示符访问 Git Bash?
- javascript - 如何从具有给定 ID 的列表中获取对象?
- python - 名称主屏幕未定义
- python-3.x - 在 Python 中替换字符串
- wordpress - Webpack 根据页面在 wordpress 网站上拆分代码。这个怎么做
- python - 如何在分配功能时在 Python 中静音输出?