【问题标题】:Create a new column with labels bases on a different columns values基于不同的列值创建带有标签的新列
【发布时间】:2019-07-10 20:54:21
【问题描述】:

我正在尝试根据不同列的值创建一个新列,以将不同列中的值基本上标记到两个存储桶中。

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

预期的 df 看起来像:

date | label 
4/24     1
4/25     2
4/26     1
4/24     1
4/26     1

标签将是新列

感谢观看

【问题讨论】:

  • 您需要为您的问题添加更多细节(即您希望结果数据框是什么样的)?不知道现在的措辞如何。
  • 谢谢,@EHB 我包含的 df 样本将是预期结果
  • 换句话说,在本网站上,我们要求用户为您尝试解决的问题提供minimal reproducible example,包括示例输入和输出,以及您迄今为止尝试过的内容.例如,你没有展示你以前的努力,或者描述你是如何从这个输入数据中得到这些标签的

标签: python python-3.x pandas data-science


【解决方案1】:

我想这就是你要找的东西:

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    假设你有一个分类函数

    def classify(date):
        # returns a label for date
    

    那么你就可以实现你所需要的:

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

    【讨论】:

    • 我想这就是我的问题,例如,如果我希望 4/24、4/26 的标签为 1 和 4/25 的标签为 2,我将如何将其作为代码输入到该函数中?跨度>
    【解决方案3】:

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

    print(date | label)
    dates = ['4/24', '4/25', '4/26', '4/24', '4/26']
    labels = ['1','2','1','2','1']
    for i in range(len(dates)):
        print(dates[i]+'     '+labels[i])
    

    我猜这就是你想要的

    考虑到您将所有标签和日期放在两个列表中,按索引排序。

    或者你可以这样做:

    datesToBePrinted = zip(dates, labels)
    for i in datesToBePrinted:
        print(i)
    

    【讨论】:

      【解决方案4】:

      在这种非常特殊的情况下,您只需要检查最后一个字符是否为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
      

      【讨论】:

        猜你喜欢
        • 2022-01-26
        • 1970-01-01
        • 2020-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 2022-06-22
        相关资源
        最近更新 更多