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