Python 熊猫:根据列值重新构造dataframe
熊猫数据框包括两列“A”和“B”Python 熊猫:根据列值重新构造dataframe,python,pandas,Python,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, dr
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