python拆分行和列

python拆分行和列,python,pandas,dataframe,Python,Pandas,Dataframe,我对使用python一无所知 我使用的是一个数据帧,其中一行需要拆分为两行。 除了一列之外,这两行都有相同的数据假设我们有一个df: df Column1 Column2 Column3 0 1 A1 A2 1 2 B1 B2 然后我们可以做: df["Column4"] = df.apply(lambda x: [x[1],x[2]], axis=1) df = df.explode("Column4") print(

我对使用python一无所知 我使用的是一个数据帧,其中一行需要拆分为两行。 除了一列之外,这两行都有相同的数据

假设我们有一个df:

df
   Column1 Column2 Column3
0        1      A1      A2
1        2      B1      B2
然后我们可以做:

df["Column4"] = df.apply(lambda x: [x[1],x[2]], axis=1)
df = df.explode("Column4")
print(df)

   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        1      A1      A2      A2
1        2      B1      B2      B1
1        2      B1      B2      B2
如果
Column1
的内容是一个问题,我们可以更进一步:

df["Column1"] = range(1, df.shape[0]+1)
print(df)

   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        2      A1      A2      A2
1        3      B1      B2      B1
1        4      B1      B2      B2
假设我们有一个df:

df
   Column1 Column2 Column3
0        1      A1      A2
1        2      B1      B2
然后我们可以做:

df["Column4"] = df.apply(lambda x: [x[1],x[2]], axis=1)
df = df.explode("Column4")
print(df)

   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        1      A1      A2      A2
1        2      B1      B2      B1
1        2      B1      B2      B2
如果
Column1
的内容是一个问题,我们可以更进一步:

df["Column1"] = range(1, df.shape[0]+1)
print(df)

   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        2      A1      A2      A2
1        3      B1      B2      B1
1        4      B1      B2      B2

下面是另一种不使用
apply
的方法,然后是:



下面是另一种不使用
apply
的方法,然后是:


另一种方法:

new_df = (df.reindex(df.index.repeat(len(df.columns)-1))
            .assign(Column4 = df[df.columns.difference(['Column1'])].stack().values))
print(new_df)
   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        1      A1      A2      A2
1        2      B1      B2      B1
1        2      B1      B2      B2
另一种方法:

new_df = (df.reindex(df.index.repeat(len(df.columns)-1))
            .assign(Column4 = df[df.columns.difference(['Column1'])].stack().values))
print(new_df)
   Column1 Column2 Column3 Column4
0        1      A1      A2      A1
0        1      A1      A2      A2
1        2      B1      B2      B1
1        2      B1      B2      B2

请分享一份。您至少可以以一种便于其他人帮助您的格式提供数据。您还没有解释具体的问题是什么,您尝试了什么,等等。请分享一个。您至少可以以一种便于其他人帮助您的格式提供数据。您还没有解释具体的问题是什么,您尝试了什么,等等。如果我执行代码一次,它就好了,如果执行多次,它会产生双倍的效果result@Himavari当然,它应该运行一次,因为
df
在执行过程中发生了变异。如果你想再次运行它,你需要从头开始,重新定义你的
df
,正如在OP中所给出的那样。如果我执行一次代码,它会很好,如果执行多次,它会产生双倍的result@Himavari当然,它应该运行一次,因为
df
在执行过程中发生了变异。如果你想再次运行它,你需要从头开始,重新定义你的
df
,正如在OP中给出的那样。