如果列是长度可变的字符串,如何将 Pandas DataFrame 列拆分为多列?

How to split a Pandas DataFrame column into multiple columns if the column is a string of varying length?

我有一个 Pandas DataFrame,它是通过从带有表格的 PDF 中读取 table 创建的。 PDF 没有被完美解析,所以我最终将一些 table 列混入生成的 DataFrame 中的一列中。问题是 PDF 中的 table 列之一是文本,因此有时有一个词,有时有两个词组成该列。示例:

            Col_1  Col_2
0       Hello X Y      A
1 Hello world Q R      B
2          Hi S T      C

我想将 Col_1 分成 3 列。我不确定该怎么做,因为第一个新列有时由一个词组成,例如第 0 行和第 2 行,有时由两个词组成,例如第 1 行。

我曾尝试用 df['Col_1'].str.split(' ', 4, expand=True) 拆分 Col_1 的字符串,但这会从字符串的开头(从左侧)开始拆分,而我希望完成拆分我想是从右边开始。

您可以尝试使用 str.rsplit:

Splits string around given separator/delimiter, starting from the right.

df['Col_1'].str.rsplit(' ', 2, expand=True)

输出:

             0  1  2
0        Hello  X  Y
1  Hello world  Q  R
2           Hi  S  T

作为完整的数据框:

df['Col_1'].str.rsplit(' ', 2, expand=True).add_prefix('nCol_').join(df)

输出:

        nCol_0 nCol_1 nCol_2            Col_1 Col_2
0        Hello      X      Y        Hello X Y     A
1  Hello world      Q      R  Hello world Q R     B
2           Hi      S      T           Hi S T     C