Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在考虑Pandas、Python中的行数(也可以称为平铺/装箱)的同时,将1-5添加到行中_Python_Pandas - Fatal编程技术网

在考虑Pandas、Python中的行数(也可以称为平铺/装箱)的同时,将1-5添加到行中

在考虑Pandas、Python中的行数(也可以称为平铺/装箱)的同时,将1-5添加到行中,python,pandas,Python,Pandas,我有一个看起来像这样的数据框,它是有序的: 我不确定技术术语是什么(我想是平铺),但我想添加一个新列,该列包含一个从1到5的数字字符串,并尽可能均匀地分布,因此我的数据帧如下所示: 我该怎么做呢 提前谢谢 编辑2018-11-08: 被要求将实际数据粘贴到问题中 我的数据当前的外观: Name Score Harry 43 Sally 234 Mary 54 John 34 Francis 12 Devon 43 James 54 Holly 65 Mo

我有一个看起来像这样的数据框,它是有序的:

我不确定技术术语是什么(我想是平铺),但我想添加一个新列,该列包含一个从1到5的数字字符串,并尽可能均匀地分布,因此我的数据帧如下所示:

我该怎么做呢

提前谢谢

编辑2018-11-08: 被要求将实际数据粘贴到问题中

我的数据当前的外观:

Name    Score
Harry   43
Sally   234
Mary    54
John    34
Francis 12
Devon   43
James   54
Holly   65
Molly   23
Nancy   12
Ben     32
Name    Score   Tile
Harry   43  1
Sally   234 1
Mary    54  1
John    34  2
Francis 12  2
Devon   43  3
James   54  3
Holly   65  4
Molly   23  4
Nancy   12  5
Ben 32  5
以下是我想要的外观:

Name    Score
Harry   43
Sally   234
Mary    54
John    34
Francis 12
Devon   43
James   54
Holly   65
Molly   23
Nancy   12
Ben     32
Name    Score   Tile
Harry   43  1
Sally   234 1
Mary    54  1
John    34  2
Francis 12  2
Devon   43  3
James   54  3
Holly   65  4
Molly   23  4
Nancy   12  5
Ben 32  5
进一步编辑问题2018-11-08:

Name    Score
Harry   43
Sally   234
Mary    54
John    34
Francis 12
Devon   43
James   54
Holly   65
Molly   23
Nancy   12
Ben     32
Name    Score   Tile
Harry   43  1
Sally   234 1
Mary    54  1
John    34  2
Francis 12  2
Devon   43  3
James   54  3
Holly   65  4
Molly   23  4
Nancy   12  5
Ben 32  5

进一步编辑进一步问题2018-11-08:

Name    Score
Harry   43
Sally   234
Mary    54
John    34
Francis 12
Devon   43
James   54
Holly   65
Molly   23
Nancy   12
Ben     32
Name    Score   Tile
Harry   43  1
Sally   234 1
Mary    54  1
John    34  2
Francis 12  2
Devon   43  3
James   54  3
Holly   65  4
Molly   23  4
Nancy   12  5
Ben 32  5
我更改了代码,如下所示:

import pandas as pd
import numpy as np

df=pd.DataFrame({'Name':['Harry','Sally','Mary','John','Francis','Devon','James','Holly','Molly','Nancy','Ben'], 'Score': [43,234,54,34,12,43,54,65,23,12,32],
                 'Animal': ['dog', 'dog', 'cat', 'cat', 'dog', 'horse', 'dog', 'snake', 'dog', 'mouse', 'horse']})
tiles = pd.qcut(np.arange(len(df["Animal"])),3)
df['tiles']=tiles
print (df)
我得到了以下结果:


似乎您需要
qcut

pd.qcut(np.arange(len(df)),5,labels=[1,2,3,4,5])
Out[175]: 
[1, 1, 1, 2, 2, ..., 3, 4, 4, 5, 5]

您可以在数据帧上的索引上使用pd.qcut(假设您有一个整数索引):


基本上,您需要
模数
来分割数据帧的长度

见下面的模型:

import pandas as pd
import numpy as np
from first import *
df = pd.DataFrame({'Name': ['Harry', 'Sally','Mary', 'James', 'Ben', 'Nancy', 'Francis'],
 'Score': [10, 15, 18, 20, 25, 30,35]},)
df['Tile'] = range(len(df))
df['Tile'] = df['Tile']%5+1

df
见结果:


它们是按顺序排列的,还是随机抽样?嗯,为什么重复3次?另外,你能在这里发布你的样本数据吗(不是图片)@ALollz他们在里面order@W-B如果您的行数与您的范围不匹配,我不确定它将如何分布。现在我将把数据粘贴进去……问题只是1应该重复3次,还是5次(或任何其他数字),谢谢你的回复!真的很有帮助!我想知道,如果你的索引不是一个整数,你的因子是3,你会怎么做?我已经在原始问题“编辑进一步问题2018-11-08:”以及我的code@semiflex正如W.B.在下面写到的,您可以用np.arange(len(df))替换df.index;这样你就不需要一个整数索引了。所以在我的例子中,我必须加上:np.arange(len(df[“Animal”]),所以我按照你和W.B.的建议尝试了一下,得到了一个稍微不同的结果。我把它附在我的原始问题下面:进一步编辑的进一步问题2018-11-08:你必须使用这个:tiles=pd.qcut(np.arange(len(df[“Animal”])),3,labels=False)