Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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:将两个链接列拆分为新行_Python_Pandas_Python 2.7_Data Manipulation_Keyerror - Fatal编程技术网

Python:将两个链接列拆分为新行

Python:将两个链接列拆分为新行,python,pandas,python-2.7,data-manipulation,keyerror,Python,Pandas,Python 2.7,Data Manipulation,Keyerror,我有以下数据帧: N1 FF1; FF2 PP1; PP2 N2 FF3 PP3 N3 FF4; FF5; FF6 PP4; PP5; PP6 FF和PP列具有以下关系,每个FF都以相同的编号链接到PP,即FF1链接到PP1,以此类推 我需要的输出如下: N1 FF1 PP1 N1 FF2 PP2 N2 FF3 PP3 N3 FF4 PP4 N3 FF5 PP5 N3 FF6 PP6 到目前

我有以下数据帧:

N1   FF1; FF2                PP1; PP2
N2   FF3                     PP3
N3   FF4; FF5; FF6           PP4; PP5; PP6
FF和PP列具有以下关系,每个FF都以相同的编号链接到PP,即FF1链接到PP1,以此类推

我需要的输出如下:

N1 FF1 PP1
N1 FF2 PP2
N2 FF3 PP3
N3 FF4 PP4
N3 FF5 PP5
N3 FF6 PP6
到目前为止,我尝试了以下方法:

df_copy = df["F","P"].str.split(";").apply(Series,1).stack()
然而,我收到一个键错误,并困惑于如何继续

非常新的编程,我非常感谢一些指导


谢谢

对于Pandas/NumPy,您应该尽可能使用矢量化方法
apply
+
pd.Series
是一个效率低下的Python级循环

例如,使用和:


谢谢@jpp的快速回复,非常感谢!!
from itertools import chain

df = pd.DataFrame([['N1', 'FF1; FF2', 'PP1; PP2'],
                   ['N2', 'FF3', 'PP3'],
                   ['N3', 'FF4; FF5; FF6', 'PP4; PP5; PP6']])

split1, split2 = df[1].str.split('; '), df[2].str.split('; ')
n = split1.str.len()

res = pd.DataFrame({0: df[0].values.repeat(n.values),
                    1: list(chain.from_iterable(split1)),
                    2: list(chain.from_iterable(split2))})

print(res)

    0    1    2
0  N1  FF1  PP1
1  N1  FF2  PP2
2  N2  FF3  PP3
3  N3  FF4  PP4
4  N3  FF5  PP5
5  N3  FF6  PP6