将熊猫数据框的索引重置为从零开始

时间:2018-12-18 09:19:57

标签: python pandas dataframe plot

我正在将形状为(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='') 

2 个答案:

答案 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))