提问人:Rizky Alvian 提问时间:1/28/2022 更新时间:1/28/2022 访问量:532
对 DataFrame 进行切片,并使用“for”循环将其分配给新变量
Slicing a DataFrame and assign it to new variables with a "for" loop
问:
我有一个数据帧 (2025x10)。我想对 DataFrame 进行切片并将其分配给一个新的 DataFrame 变量,每个变量包含连续 25 行,并相对于索引。因此,将有 81 个新的 DataFrame 变量 ( 2025:25 = 81) 这是我手动编写的没有“for”循环的代码
newdata_1 =old_data.iloc[0:25,:]
newdata_2=old_data.iloc[25:50,:]
newdata_3 =old_data.iloc[50:75,:]
newdata_4=old_data.iloc[75:100,:]
#until newdata_81=old_data.iloc[2000:2025,:]
我可以用一个“for”循环而不是手动编写整个代码来做到这一点吗?
答:
1赞
Mazhar
1/28/2022
#1
all_df = {}
for i, j in enumerate(range(0, 2025, 25)):
all_df[f"newdata_{i+1}"] = df.iloc[j:j+25,:]
2赞
Corralien
1/28/2022
#2
您想要的是使用 or (or ) 动态创建新变量。这不是一个很好的做法,但当你控制变量名称时,它并不那么危险。globals()
locals()
vars()
old_data = pd.DataFrame({'A': np.random.random(2025)})
for i, df in enumerate(np.array_split(old_data, len(old_data) / 25), 1):
globals()[f'newdata_{i}'] = df
现在,您可以使用新的变量名称访问切片:
>>> newdata_45
A
1100 0.443526
1101 0.564314
1102 0.548801
1103 0.561671
1104 0.668331
1105 0.046114
1106 0.090302
1107 0.830096
1108 0.991514
1109 0.285102
1110 0.093784
1111 0.535805
1112 0.154352
1113 0.678095
1114 0.284844
1115 0.137232
1116 0.219372
1117 0.816656
1118 0.519414
1119 0.673969
1120 0.674139
1121 0.239825
1122 0.257405
1123 0.565221
1124 0.561289
评论