如何从每10行的DataFrame中复制行?

时间:2018-03-17 22:13:30

标签: python pandas numpy dataframe

假设我有974行数据。我想要做的是从数据框创建一个新的np.array,格式如下:

只有当长度为10时才将前10行添加到np.array直到数据帧结束。这里我是如何解决这个问题的:

clen = len(df)
X = []
for i in range(clen):
    if len(df[i:i+10]) == 10:
        X.append(np.array(df[i:i+10]).astype(float))

我相信有更好的方法可以做到这一点,但不想做错事而无法找到它。

我想要做的是将每第11行添加到另一个np.array()。我还无法找到。

所以我有974行。从第一行开始,每10行将添加到X阵列,下一行将添加到另一个阵列。顺便说一句,X会是这样的:

[[0,1,2,3,4,5,6,7,8,9],
[1,2,3,4,5,6,7,8,9,10],
[2,3,4,5,6,7,8,9,10,11]
....]

和y将是

[10,11,12....]

我希望我能解释一下我的需要

2 个答案:

答案 0 :(得分:0)

如果你想选择每一行,我认为以下内容应该有效:

#starting criteria can be changed if required
indices = list(range(0,len(df),11))
every_eleventh = df.iloc[indices]

通常,如果要根据索引而不是名称进行选择,则可以使用.iloc。

答案 1 :(得分:0)

我认为你可以使用:

list(df[i:i+10] for i in range(len(df)-9))

获得X。

根据您的问题:every 10 rows will be added to X array and the next one will be added to another array使用:

df[10:]

得到Y.但我不认为这是你真正想要的Y.