我有一个csv数据文件,我用一个列值将其拆分为5个数据集,每个人使用:
for i in range(1,6):
PersonData = df[df['Person'] == i].values
P[i] = PersonData
我想根据一列将数据按升序排序,然后在该列将数据拆分为中间值。你知道吗
所以我用以下方法对数据进行了排序:
dataP = {}
for i in range(1,6):
sortData = P[i][P[i][:,9].argsort()]
P[i] = sortData
P[i] = pd.DataFrame(P[i])
dataP[1]
使用它,我为每个数据集1-6获得了一个数据帧,它按相关列(9)排序,这取决于我在dataP[I]中输入的数字。你知道吗
然后我计算一半的长度:
for i in range(1,6):
middle = len(dataP[i])/2
print(middle)
我被困在这里了!你知道吗
我需要在每个dataP[I]dataframe中创建一个新列,将长度拆分为2,如果在前半部分,则值为0,如果在后半部分,则值为1。你知道吗
这是我尝试过的,但我不明白为什么它不能生成一个新的值0和1的列表,我可以在以后附加到dataP[I]中:
for n in range(1, (len(dataP[i]))):
for n, line in enumerate(dataP[i]):
if middle > n:
confval = 0
elif middle < n:
confval = 1
for i in range(1,6):
Confval[i] = confval
Confval[1]
抱歉,如果这是基本的,我是相当新的,所以我写的很多东西可能不是最好的方式/必要的,并为长期的职位也很抱歉。你知道吗
任何帮助都将不胜感激。提前谢谢!你知道吗
如果我没看错你的问题,我相信你在试图做两件事。你知道吗
让我们先解决#1:
median = df['originalcolumn'].median()
太简单了!像这样的东西有很多大熊猫的功能。你知道吗
好的,那么第二点:
df['newcolumn'] = df[df['originalcolumn'] > median].astype(int)
我们在这里做的是创建一个新的布尔级数,如果该位置的值小于中值,则为假,否则为真。然后我们可以把它转换成一个int,它给出0和1
相关问题 更多 >
编程相关推荐