Pandas将多行交换为列

2024-05-16 16:35:50 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道如何转换熊猫数据帧吗?我有这样的数据集:

# 99564, Noam
Hop Company LLC, 10503 Cher rd
(123) 456-7890, Motor SR 5032
# 99843, Noam
Hop Prods,  902010 Rogg rd
(123) 456-7890, Ed CA 3534
# 99223, Noam
Skyline LLC,    12795 Rodf Road
(123) 456-7890, Sats Road 3922

我想把它转换成这样:

# 99564, Noam, Hop Company LLC, 10503 Cher rd,(123) 456-7890,   Motor SR 5032
# 99843, Noam, Hop Prods, 902010 Rogg rd, (123) 456-7890,   Ed CA 3534
# 99223, Noam, Skyline LLC, 12795 Rodf Road, (123) 456-7890,    Sats Road 3922

有人能帮我指点一下怎么做吗

谢谢


Tags: 数据rdcompanycasrmotoredllc
1条回答
网友
1楼 · 发布于 2024-05-16 16:35:50

如果您的结果已经在一个数据帧中,您可以使用索引过滤对其进行重新塑造,并使用两个concat将其重新连接

df = pd.read_csv(StringIO(data),sep=',',header=None)


df2 = df.loc[~df.index.isin(df.iloc[::3].index.tolist())].reset_index(drop=True)

df2 = pd.concat([df2.iloc[::2].reset_index(drop=True),
           df2.iloc[1::2].reset_index(drop=True)],axis=1,ignore_index=False)


final = pd.concat([df.iloc[::3].reset_index(drop=True),df2],axis=1)


print(final)

         0      1                0                    1               0  \
0  # 99564   Noam  Hop Company LLC        10503 Cher rd  (123) 456-7890   
1  # 99843   Noam        Hop Prods       902010 Rogg rd  (123) 456-7890   
2  # 99223   Noam      Skyline LLC      12795 Rodf Road  (123) 456-7890   

                 1  
0    Motor SR 5032  
1       Ed CA 3534  
2   Sats Road 3922  

相关问题 更多 >