簡體   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