日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

pandas實現一行拆分成多行_python

作者:Jalen備忘錄 ? 更新時間: 2022-07-06 編程語言

一行拆分成多行

1.根據某一列拆分

效果:

代碼:

if __name__ == '__main__':
    import pandas as pd
    df = pd.DataFrame({'Country': ['China,US', 'Japan,EU', 'UK,Australia', 'Singapore,Netherland'],
                       'Number': [100, 150, 120, 90],
                       'Value': [1, 2, 3, 4],
                       'label': list('abcd')})
    df_split_row = df.drop('Country', axis=1).join(
        df['Country'].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename('Country'))

2.根據多列拆分

效果:

代碼:

if __name__ == '__main__':
    import pandas as pd
    df = pd.DataFrame({'Code': ['212027'],
                       'Color': ['blue, pink, yellow'],
                       'Size': ['12-18M, 2-3Y, 3-4Y']})
    split_columns = ['Color', 'Size']
    df_convert = df.drop(columns=split_columns, axis=1)
    for column in split_columns:
        df_convert = df_convert.join(
            df[column].str.split(',', expand=True).stack().reset_index(level=1, drop=True).rename(column))
    df_convert = df_convert.reset_index(drop=True)

一行轉多行、多行轉一行

1.測試數據

df = pd.DataFrame([['張世龍', '籃球、羽毛球、英雄聯盟'],
                   ['黃邵飛', '兵乓球、足球、下棋'],
                   ['劉苗苗', '繪畫、寫小說、跑步']])
df.columns = ['姓名','愛好']

2.一行轉多行

方法一:

# 1、把渠道字段拆分,分為多列; 2、把行轉列成列;3、重置索引,并刪除多于的索引;4、更改名稱
df_ = df['愛好'].str.split('、',expand=True).stack().reset_index(level=1,drop=True).rename('愛好')
df1 = df.drop(['愛好'], axis=1).join(df_)

方發二:

# 1、將渠道字段拆分;2、調用explode()方法
df['愛好'] = df['愛好'].map(lambda x:x.split('、'))
df1 = df.explode('愛好')

3.多行轉一行

#定義拼接函數,并對字段進行去重
def concat_func(x):
    return pd.Series({
        '愛好':'、'.join(x['愛好'].unique())
    })
#分組聚合 + 拼接
df2 = df1.groupby(df1['姓名']).apply(concat_func).reset_index()

原文鏈接:https://blog.csdn.net/baidu_30809315/article/details/93748732

欄目分類
最近更新