数据框内的字符串,带冒号到整数
Posted
技术标签:
【中文标题】数据框内的字符串,带冒号到整数【英文标题】: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'
【问题讨论】:
【参考方案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
【讨论】:
以上是关于数据框内的字符串,带冒号到整数的主要内容,如果未能解决你的问题,请参考以下文章