python - Pandas:从列值重构数据框

标签 python pandas

pandas 数据框包含两列“A”和“B”

A   B
1   a b
2   a c d
3   x 

“B”列中的每个值都是一个字符串,其中包含由空格分隔的可变数量的字母。

有没有简单的构造方法:

A   B
1   a
1   b
2   a
2   c
2   d
3   x

最佳答案

您可以使用以下内容:

splitted = df.set_index("A")["B"].str.split(expand=True)
stacked = splitted.stack().reset_index(1, drop=True)
result = stacked.to_frame("B").reset_index()

print(result)
    A   B
0   1   a
1   1   b
2   2   a
3   2   c
4   2   d
5   3   x

有关子步骤,请参见下文:

print(splitted)

   0     1     2
A               
1  a     b  None
2  a     c     d
3  x  None  None

print(stacked)

A
1    a
1    b
2    a
2    c
2    d
3    x
dtype: object
<小时/>

或者您也可以使用pd.melt:

splitted = df["B"].str.split(expand=True)

pd.melt(splitted.assign(A=df.A), id_vars="A", value_name="B")\
    .dropna()\
    .drop("variable", axis=1)\
    .sort_values("A")

    A   B
0   1   a
3   1   b
1   2   a
4   2   c
7   2   d
2   3   x

关于python - Pandas:从列值重构数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43139930/

相关文章:

python - 检查条件是否匹配多个变量

python - Burrows-Wheeler 变换 (BWT) 重复字符串

python - 我可以在 numpy.random.seed() 中输入哪些数字?

python - 如何在Python中按工作日、月份等对pandas系列时间码进行排序/分组?

python - 添加一个新的 pandas dataframe 列,用条件计算填充它(平均如果,标准差如果)

python - 从 Python Breakpoints 包设置的断点不起作用

python - 如何通过python获取实时推文时定义输出推文的稳定形式

python - 如何检查 Pandas 数据框中是否存在具有特定列值的行

python - 计算工作日,包括 python 中两个日期列的自定义假期

Python数据框组标签