如何将以下数据从df1转换为df2?
df1 = pd.DataFrame([['a b c', '1 2 3', 2011], ['d e f', '4 5 6', 2012]])
#df1
a b c
0 a b c 1 2 3 2011
1 d e f 4 5 6 2012
df2 = pd.DataFrame([['a', 1, 2011], ['b', 2, 2011], ['c', 3, 2011],
['d', 4, 2012], ['e', 5, 2012], ['f', 6, 2012]])
#df2
a b c
0 a 1 2011
1 b 2 2011
2 c 3 2011
3 d 4 2012
4 e 5 2012
5 f 6 2012提前感谢!
发布于 2022-08-18 20:39:04
你可以试一试如下。将.str.split应用于循环中的a和b列,每次对结果进行exploding。这将使我们获得2 pd.Series,我们使用pd.concat将它们放在一起。在此之后,我们只需要分配col c,并重置索引。所以:
import pandas as pd
# adding columns=['a','b','c'] to match data in your post:
df1 = pd.DataFrame([['a b c', '1 2 3', 2011], ['d e f', '4 5 6', 2012]], columns=['a','b','c'])
res = pd.concat([df1[col].str.split(' ').explode() for col in ['a','b']], axis=1)
# change dtype for second col
res['b'] = res['b'].astype(int)
# assign column `c` and finally, reset index
res['c'] = df1['c']
res.reset_index(drop=True,inplace=True)
print(res)
a b c
0 a 1 2011
1 b 2 2011
2 c 3 2011
3 d 4 2012
4 e 5 2012
5 f 6 2012https://stackoverflow.com/questions/73408928
复制相似问题