Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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
Python 创建一个新列,该列的标签基于不同的列值_Python_Python 3.x_Pandas_Data Science - Fatal编程技术网

Python 创建一个新列,该列的标签基于不同的列值

Python 创建一个新列,该列的标签基于不同的列值,python,python-3.x,pandas,data-science,Python,Python 3.x,Pandas,Data Science,我正在尝试基于不同列的值创建一个新列,以便将不同列中的值标记为两个bucket 所以如果4/24,4/26的日期我想要1和4/25的标签,2的标签 预期df如下所示: date | label 4/24 1 4/25 2 4/26 1 4/24 1 4/26 1 其中label将是新列 感谢您查看假设您有一个分类功能 def classify(date): # returns a label for date 然后你就可以实现你所需要的: d

我正在尝试基于不同列的值创建一个新列,以便将不同列中的值标记为两个bucket

所以如果4/24,4/26的日期我想要1和4/25的标签,2的标签

预期df如下所示:

date | label 
4/24     1
4/25     2
4/26     1
4/24     1
4/26     1
其中label将是新列


感谢您查看

假设您有一个分类功能

def classify(date):
    # returns a label for date
然后你就可以实现你所需要的:

df['label'] = pd.Series(classify(df['date'].values), index=df.index)

嗯,如果你想打印上述专栏,你可以这样做:

打印(日期|标签)
日期=['4/24','4/25','4/26','4/24','4/26']
标签=['1'、'2'、'1'、'2'、'1']
对于范围内的i(len(日期)):
打印(日期[i]+“”+标签[i])
我想这就是你想要的

这是考虑到你所有的标签和日期都在两个列表中,按索引排序

或者你可以这样做:

datestobeprint=zip(日期、标签)
对于i in DATE待打印:
印刷品(一)

我想这就是你想要的:

import pandas as pd
dataframe = pd.DataFrame()
dataframe["date"] = ['4/24', '4/25', '4/26', '4/24', '4/26']

dictionary = {'4/24' : '1', '4/25' : '2', '4/26':'1' }
dataframe["label"] = dataframe["date"].map(dictionary)
dataframe
创建一个字典,这样我们就可以将每个标签与日期对应起来。你可以相应地修改字典

输出:

date    label
0   4/24    1
1   4/25    2
2   4/26    1
3   4/24    1
4   4/26    1
   date  label
0  4/24      1
1  4/25      2
2  4/26      1
3  4/24      1
4  4/26      1

希望这有帮助

在这种非常特殊的情况下,您只需检查最后一个字符是否为
5
,就可以使用非常好的矢量化功能:

df['label'] = df['date'].str[-1].eq('5') + 1 
输出:

date    label
0   4/24    1
1   4/25    2
2   4/26    1
3   4/24    1
4   4/26    1
   date  label
0  4/24      1
1  4/25      2
2  4/26      1
3  4/24      1
4  4/26      1

您需要为您的问题添加更多细节(例如,您希望outocome数据帧看起来像什么)?现在不知道它是如何表达的。谢谢,@EHB,我包含的df样本将是预期的结果。换句话说,在这个网站上,我们要求用户为您试图解决的问题提供一个解决方案,包括样本输入和输出,以及您迄今为止所做的尝试。例如,您没有展示您以前的工作,也没有描述您是如何从这个输入数据中获得这些标签的。我想这是我的问题。例如,如果我希望4/24、4/26的标签为1,4/25的标签为2,我如何将其作为代码输入到该函数中?