【问题标题】:String inside Dataframe with colons to integers数据框内的字符串,带冒号到整数
【发布时间】:2022-01-01 13:39:59
【问题描述】:

我有这个数据框:

C1   C2
A    2:3:1:7
B    2:1:4:3
C    2:1:1:1

我需要对C2 中的整数进行排序,保留冒号。

输出应如下所示:

C1   C2
A    1:2:3:7
B    1:2:3:4
C    1:1:1:2

上面的例子是为了理解,这是我目前的输出:

{'_c1': {0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E'}, '_c2': {0: '2:3:7:9:1:8:6:1', 1: '5:1:3:9:4:6:8', 2: '6:7:5:0:9', 3: '3:1:5:5:2:7', 4: '1:2:8:3:8:9:7:3:4:6:5:5:1:5'}}

【问题讨论】:

    标签: python pandas dataframe sorting


    【解决方案1】:
    df['C2'] = df['C2'].str.split(':').apply(lambda x: x.sort() or x).str.join(':')
    

    输出:

    >>> df
      C1       C2
    0  A  1:2:3:7
    1  B  1:2:3:4
    2  C  1:1:1:2
    

    【讨论】:

    • df.assign(C2 = df.C2.str.split(':').map(sorted).str.join(':'))
    • 我收到此错误:“只能使用带有字符串值的 .str 访问器!”,但我已经使用 astype str,您有什么建议吗?
    • 请把print(df.head().to_dict())的输出发给我。
    • 给我一点时间。
    • 试试这个代码:df['_c2'] = df['_c2'].str.split(':').apply(lambda x: x.sort() or x).str.join(':')
    【解决方案2】:

    没有 NaN,你可以使用:

    df['C2_new'] = [':'.join(sorted(x.split(':'))) for x in df['C2']]
    

    输出:

      C1       C2   C2_new
    0  A  2:3:1:7  1:2:3:7
    1  B  2:1:4:3  1:2:3:4
    2  C  2:1:1:1  1:1:1:2
    

    【讨论】:

      猜你喜欢
      • 2014-12-18
      • 2021-05-18
      • 1970-01-01
      • 2019-08-28
      • 2021-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2011-10-07
      相关资源
      最近更新 更多