Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:根据列值重新构造dataframe_Python_Pandas - Fatal编程技术网

Python 熊猫:根据列值重新构造dataframe

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”

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