Python 创建一个新列,该列的标签基于不同的列值
我正在尝试基于不同列的值创建一个新列,以便将不同列中的值标记为两个bucket 所以如果4/24,4/26的日期我想要1和4/25的标签,2的标签 预期df如下所示: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
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,我如何将其作为代码输入到该函数中?