脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - pandas实现一行拆分成多行

pandas实现一行拆分成多行

2022-12-29 12:12Jalen备忘录 Python

这篇文章主要介绍了pandas实现一行拆分成多行方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一行拆分成多行

1.根据某一列拆分

效果:

pandas实现一行拆分成多行

pandas实现一行拆分成多行

代码:

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.根据多列拆分

效果:

pandas实现一行拆分成多行

pandas实现一行拆分成多行

代码:

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 = ['姓名','爱好']

pandas实现一行拆分成多行

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('爱好')

pandas实现一行拆分成多行

3.多行转一行

#定义拼接函数,并对字段进行去重
def concat_func(x):
  return pd.Series({
      '爱好':'、'.join(x['爱好'].unique())
  })
#分组聚合 + 拼接
df2 = df1.groupby(df1['姓名']).apply(concat_func).reset_index()

pandas实现一行拆分成多行

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。

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

延伸 · 阅读

精彩推荐