这道题似乎不难,但不知怎么的我就是做不出来。我的问题如下。我有一句话要说:
dfin
A B C
a 1 198q24
a 2 128q6
a 6 1456
b 7 67q22
b 1 56
c 3 451q2
d 11 1q789
所以现在我想做的是如下,每当脚本遇到'q'时,它将拆分值并创建一个单独的列,其中的值从'q'开始。q之前的部分将保留在原始列中(或者可以创建一个新列)。所以我的期望输出应该如下:
dfout
A B C D
a 1 198 q24
a 2 128 q6
a 6 1456
b 7 67 q22
b 1 56
c 3 451 q2
d 11 1 q789
所以我到目前为止所做的尝试如下:
dfout = dfin.replace('\q\d*', '', regex=True)
它创建了一个没有q的列,但是我不能创建列D,也不能按预期工作。
任何帮助/想法将帮助和赞赏。
3条答案
按热度按时间qv7cva1a1#
输出量:
plicqrtu2#
有多种方法可以做到这一点,但一种方法是在'q'上拆分列后使用
pd.concat
:打印:
wztqucjr3#
验证码
使用
str.extract
产出:
我意识到我忽略了改变C列的必要性。来自@user19077881的建议。然后使用以下代码
产出:
如果你不想替换原始df,使用下面代码:
示例代码