繁体   English   中英

重新格式化奇怪的 Dataframe

[英]Reformat weird Dataframe

名称 地方 pers_data
史密斯约翰 纽约 sjohn@gmail.com
0987 4567
0653 6734
维克斯蒂德 SA 0986 5332
vickie@hotmail.com

我想删除 NaN 值并重新格式化文件,如下所示:

名称 地方 pers_data 其他 other_2
史密斯约翰 纽约 sjohn@gmail.com 0987 4567 0653 6734
维克斯蒂德 SA vickie@hotmail.com 0986 5332

有人可以帮我吗,我尝试了一些东西,但什么都不懂,我想真正了解自己在做什么。

这是pivot的变体:

idx = df['Name'].notna().cumsum()
out = (df
   .assign(col=df.groupby(idx).cumcount(),
           Name=df['Name'].groupby(idx).ffill(),
           place=df['place'].groupby(idx).ffill()
          )
   .pivot(index=['Name', 'place'], columns='col', values='pers_data')
   .add_prefix('other_').rename(columns={'other_0': 'pers_data'})
   .reset_index().rename_axis(columns=None)
   .dropna(how='all')
)

output:

         Name place        pers_data             other_1    other_2
1  Smith John    NY  sjohn@gmail.com           0987 4567  0653 6734
2   Vic Stied    SA        0986 5332  vickie@hotmail.com        NaN
df1.loc[~df1.isna().all(axis=1)].fillna(method='ffill')\
    .groupby(['Name','place']).agg(','.join)\
    .pers_data.str.split(',',expand=True).add_prefix('other_')\
    .rename(columns={'other_0':'pers_data'}).reset_index()
        
                Name place        pers_data             other_1    other_2
        0  Smith John    NY  sjohn@gmail.com           0987 4567  0653 6734
        1   Vic Stied    SA        0986 5332  vickie@hotmail.com       None

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM