tra*_*mot 3 python dataframe pandas
我从 CSV 文件中读取了数千行,其中包含用于计算不同输出的数据。我读取这个 CSV 文件并将输入存储在 Pandas 数据框中。然后我用来itterrows()循环数据帧。有时我的代码会失败,此时我希望读取原始文件,但在失败后的行中拾取进程。因此,当发生这种情况时,请设置我的代码,以便在进入 for 循环之前取消注释两行并将原始数据帧缩小到一定大小itterrows():
# slicing it and re-indexing when a restart is needed
df_slice = df.iloc[1292:,]
for index,row in df_slice.iterrows():
Run Code Online (Sandbox Code Playgroud)
然而,如果我如上所示对原始数据帧进行切片,“itterrows()”循环中的索引值将从 1292 开始,因此会从较小的切片数据帧顶部跳过 1292 个位置。如何让它从 0/1 开始?
我尝试重置索引:
# slicing it and re-indexing when a restart is needed
df_slice = df.iloc[1292:,]
df_slice.reset_index()
for index,row in df_slice.iterrows():
Run Code Online (Sandbox Code Playgroud)
但这并没有改变任何事情 - 蒸馏器中的索引for index,row in df_slice.iterrows():停留在 1292,因此切片索引下降了 1292 个位置。
那么,我如何才能直接iterrows()到某个起始行(在原始索引上)或正确地切片并重置较小数据帧的索引,以便能够从新的“顶”行开始并向下移动。
小智 5
.ix您需要使用而不是.iloc如下方式对DataFrame 进行切片:
df_slice = df.ix[1292:]
Run Code Online (Sandbox Code Playgroud)
我刚刚遇到了类似的问题,我的困惑来自于 Pandas 中有两种不同的数据帧切片方式。通过标签 ( .ix) 和整数位置 ( .iloc)。df.itterows()返回基于标签的索引,因此要从上次停下的地方继续,您需要使用.ix