如果列是长度可变的字符串,如何将 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
我有一个 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