pandas 分隔字符串中每个字符的分隔符?

weylhg0b  于 2023-02-27  发布在  其他
关注(0)|答案(5)|浏览(129)

我目前正尝试将pandomdata.frame中的两个字符串拆分为两个单独的列,但我一直在努力寻找一种方法来对列执行操作,而不必遍历每一行。
我的起始 Dataframe 看起来像这样:

Initial
0      PT
1      XT
2      ZT

我希望将“Initial”列拆分为两个单独的列,每个列包含一个字符,如下所示:

S1 S2
0  P  T
1  X  T
2  Z  T

我已经使用了split()函数,并且我试图找到一个合适的分隔符来提供给它,它可以分割每个字符,但是到目前为止我还没有找到一个好的方法来做到这一点,而不需要迭代每一行?

oxf4rvwz

oxf4rvwz1#

您可以使用pandas.Series.str.extract来完成此操作

df[["S1", "S2"]] = df.Initial.str.extract(r"(.)(.)")
df.drop("Initial", axis=1, inplace=True)
print(df)
S1 S2
0  P  T
1  X  T
2  Z  T
q1qsirdb

q1qsirdb2#

您可以使用split,使用正则表达式匹配两个字符之间的位置(例如,(?<=^.),查找字符串开始后的单个字符)和expand=True

df[['S1', 'S2']] = df['Initial'].str.split(r'(?<=^.)', expand=True, regex=True)

输出:

Initial S1 S2
0      PT  P  T
1      XT  X  T
2      ZT  Z  T

如果不再需要drop列,则可以将其删除到Initial列:

df.drop('Initial', axis=1, inplace=True)

输出:

S1 S2
0  P  T
1  X  T
2  Z  T
vcudknz3

vcudknz33#

不确定panda,但是list(text)将创建一个字符串中所有字符的列表
然后你可以尝试在列表的列表上创建一个 Dataframe 。

mw3dktmi

mw3dktmi4#

使用Series.str.slice

df["S1"] = df["Initial"].str.slice(0, 1)
df["S2"] = df["Initial"].str.slice(1, 2)

其中:

Initial S1 S2
0      PT  P  T
1      XT  X  T
2      ZT  Z  T
9rygscc1

9rygscc15#

使用列表转换将所有字符拆分为新列:

out = (
 pd.DataFrame(df['Initial'].apply(list).tolist(),
              index=df.index)
   .rename(columns=lambda x: f'S{x+1}')
   .fillna('') # optional, only if non-even input
 )

输出:

S1 S2
0  P  T
1  X  T
2  Z  T

在非偶数输入上:

# input
  Initial
0      PT
1      XT
2      ZT
3     ABC

# output

  S1 S2 S3
0  P  T   
1  X  T   
2  Z  T   
3  A  B  C

相关问题