python拆分行和列
我对使用python一无所知 我使用的是一个数据帧,其中一行需要拆分为两行。 除了一列之外,这两行都有相同的数据假设我们有一个df: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(
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中给出的那样。