pandas 如何“扁平化”一个其中一列包含空格分隔列表的框架?

xpcnnkqh  于 2023-11-15  发布在  其他
关注(0)|答案(3)|浏览(67)

此问题在此处已有答案

Split (explode) pandas dataframe string entry to separate rows(27个回答)
6天前关闭
我的DF看起来像这样:

A  |   B    | C
1 2 3|location|code

字符串
我想做的是让DF看起来像这样:

A|   B    |  C
1|location|code
2|location|code
3|location|code


有效地为第一列中的每个空格分隔的值重复该行。
有没有一种以pandas为中心的方法来做到这一点(而不是迭代每一行并扩展第一列中的值)?

5lwkijsr

5lwkijsr1#

explode之前使用str.split您的框架:

>>> df.assign(A=df['A'].str.split('\s+')).explode('A', ignore_index=True)
   A         B     C
0  1  location  code
1  2  location  code
2  3  location  code

字符串
中间步骤:

>>> df.assign(A=df['A'].str.split('\s+'))
           A         B     C
0  [1, 2, 3]  location  code

yqkkidmi

yqkkidmi2#

你可以先将列'A'转换为列表,使用:

df['A'] = df['A'].str.split(' ')

字符串
然后使用pandas中的explode方法,参见explode documentation

df = df.explode('A')
print(df)


请参见以下完整示例:

import pandas as pd
df = pd.DataFrame({
    'A' : ["1 2 3"],
    'B' : ["location"],
    'C' : ["code"]
})

df['A'] = df['A'].str.split(' ')
df.explode('A')

>>> A   B           C
    1   location    code
    2   location    code
    3   location    code

jw5wzhpr

jw5wzhpr3#

对A列执行拆分分解,然后合并它:

df[['B', 'C']].merge(df['A'].str.split().explode(), left_index = True, right_index = True)

字符串

相关问题