我正在将形状为(10, 8004)
的数据框切成形状为(58,10)的较小块,以便能够绘制它们(在绘制之前也需要转置)。 n_samples = 58
。
问题是切片后,较小的块的索引不是从零开始的,并且图具有较大的空白空间。我尝试使用其他方法重置索引,但所有方法均失败。有人可以帮助我找到正确的方法吗?
以下是我尝试过的一些内容:
for i in range(0, 138):
sliced_df = df.iloc[:, range(i*n_samples, (i+1)*n_samples)]
if i != 0:
sliced_df = sliced_df.rename(index=int, columns=range(0, n_samples))
sliced_df.T.plot(kind='line', alpha=0.5, zorder=1, label='')
这里尝试使用reindex_axis
for i in range(0, 138):
sliced_df = df.iloc[:, range(i*n_samples, (i+1)*n_samples)].reindex_axis(range(0,n_samples), axis=1).T
sliced_df.plot(kind='line', alpha=0.5, zorder=1, label='')
还尝试了reset_index(drop=True)
:
for i in range(0, 138):
sliced_df = df.iloc[:, range(i*n_samples, (i+1)*n_samples)].reset_index(drop=True).T
sliced_df.plot(kind='line', alpha=0.5, zorder=1, label='')
答案 0 :(得分:1)
df = pd.DataFrame({'X': [7, 2, 0, 3, 4, 2, 5, 0, 3, 4]})
是我正在使用的示例数据。
df1 = df.iloc[4:8]
df1.index = np.arange(len(df1))
df1
现在,df1应该具有正确的索引。您需要将此想法扩展到您的案例。
答案 1 :(得分:0)
我的错误是首先转置sliced_df,然后重置索引!因此,所有这些解决方案都有效:
sliced_df = df.iloc[:, range(ts * n_test_samples, (ts + 1) * n_test_samples)].T.reset_index().drop(['index'], axis=1)
或:
sliced_df = df.iloc[:, range(ts * n_test_samples, (ts + 1) * n_test_samples)].T.reset_index(drop=True)
或:
sliced_df = df.iloc[:, range(ts * n_test_samples, (ts + 1) * n_test_samples)].T
sliced_df.index = np.arange(range(0,n_samples))