【问题标题】:Creating a new column from the values of a column - Pandas从列的值创建新列 - Pandas
【发布时间】:2020-04-11 04:32:43
【问题描述】:

我想在 Pandas 上创建一个与我在 C 列上的信息相关的新列,并想创建一个 D 列。我拥有的数据有 50k 列,所以我无法手动完成。 .

数据样本是;

        A           B              C
        12          12            3:02
        13          13            2:02
        14          14            3:03
        15          15            1:04
        16          16            2:05

我需要将值从冒号符号中的 C 列分成两部分;
如果第一个值大于第 1 行中的第二个值 == 3>02,则 D 列值上的值将为 A
如果两个值都像第 2 行和第 3 行(2:02/3:03)一样相等,则 D 列值上的值将为 B
如果第二个值大于第一个值,如第 4 行和第 5 行 (1:04 /2:05 ) D 列值将是 C

所以新数据看起来像

    A            B             C           D
    2           12            3:02         A  
    13          13            2:02         B   
    14          14            3:03         B  
    15          15            1:04         C  
    16          16            2:05         C

提前致谢。

【问题讨论】:

  • 是否有任何代码作为起点?
  • 请添加您的代码
  • 我尝试了很多组合但我自己无法提出解决方案......因此在这里发布;拆分值后我无法弄清楚其余部分

标签: python pandas


【解决方案1】:

numpy.selectSeries.str.splitexpand=True 创建的新DataFrame 一起使用:

df1 = df['C'].str.split(':', expand=True).astype(int)
print(df1)
   0  1
1  3  2
2  2  2
3  3  3
4  1  4
5  2  5

df['D'] = np.select([df1[0] > df1[1], df1[0] == df1[1], df1[0] < df1[1]], ['A','B','C'])
print (df)
    A   B     C  D
1  12  12  3:02  A
2  13  13  2:02  B
3  14  14  3:03  B
4  15  15  1:04  C
5  16  16  2:05  C

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    • 2020-04-16
    • 2017-04-10
    • 2018-10-07
    • 2018-09-28
    相关资源
    最近更新 更多