精华内容
下载资源
问答
  • 前两天有人提了下面这样一个问题,其中一个是“一行拆多行”(将单行一中的个值分成多行单值),另外一个是“多行并一行”(将多行单值合并为单行一中的个值)。这是在对Excel数据表格进行数据处理时经常可能...

    2426a065a632496ef71ede3b1808a186.png


    粉丝提问

    大家好,欢迎来到Crossin的编程教室!

    前两天有人提了下面这样一个问题,其中一个是“一行拆多行”(将单行一列中的多个值分成多行单值),另外一个是“多行并一行”(将多行单值合并为单行一列中的多个值)。这是在对Excel数据表格进行数据处理时经常可能遇到的一个场景,如果是用 Python 做数据处理应该怎样解决呢?今天我们就来演示一下。

    6a4c1e6458d57856a23ae87027423f19.png

    一行拆多行

    上面这个问题我会提供两个思路,供大家选择,当然肯定是越简单得越好。每种方法中都有一些好用的技巧,希望大家能够好好学习。

    1)方法一

    下方代码中有很多重要的知识点,需要我们下去好好学习一下,我只提供解题思路,关于每个知识点怎么用,希望大家下去自行研究学习。

    • Pandas.melt()函数的用法;
    • Series.str.split("/",expand=True)中,expand=True参数的用法;
    • Series.sort_values()对文本进行排序;
    • Python中enumerate()函数的用法;
    import pandas as pd# 读取数据
    df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")# 将一列炸裂成多列
    df[["类型1","类型2","类型3"]] = df["电影类型"].str.split("/",expand=True)# 选取想要的列
    df_final = df[["电影名","类型1","类型2","类型3"]]# 将行转列
    df_final = df_final.melt(id_vars=["电影名"],value_name="类型")# 对“电影名”字段进行排序
    df_final = df_final[["电影名","类型"]]
    df_final.sort_values(by="电影名",inplace=True)# 删除“类型==None”的行for index,value in enumerate(df_final["类型"]):if value == None:
            df_final.drop(df_final.index[index],inplace=True)
    df_final

    结果如下:

    b66ef3650bc4ee905bfeeaf4d0cb1f57.png

    2)方法二

    上述方法确实复杂,由于我的Pandas版本是0.23.4,因此无法使用explode()方法,进行炸裂操作。在pandas0.25版本的时候,DataFrame中才新增了一个explode()方法,专门用来将一行变多行。

    • Pandas.explode()函数的用法;
    import pandas as pd# 读取数据
    df = pd.read_excel("test1.xlsx",sheet_name="Sheet1")# 将一行拆分成列表形式,注意:这里不需要使用expand=True参数
    df["type"] = df["电影类型"].str.split("/")# 直接炸裂指定列
    df.explode("type")

    结果如下:

    94f85858cbed75d7cd5b7f64da12a7d6.png

    多行并一行

    这里没有使用什么特别的知识,好好的理解Pandas中分组聚合应用某个函数,即可轻松解决这个问题。

    import pandas as pd# 读取数据
    df = pd.read_excel("test1.xlsx",sheet_name="Sheet2")# 分组聚合,应用某个函数def func(df):return ','.join(df.values)
    df = df.groupby(by='电影名').agg(func).reset_index()
    df

    结果如下:

    326a4270a675c6704dcc9045de6b26c6.png

    作者:黄伟呢

    来源:数据分析与统计学之美

    _往期文章推荐_

    想要表格行转列?简单几行Python代码搞定
    b7b4635da1da90c8db3bb88542ad3d7e.png
    展开全文
  • 后果:合并单元格之后,对后续的数据处理(排序、查询)等带来灾难性的伤害处方:纵向单元格尽量少合并,横向单元格使用跨居中模拟合并单元格。2、录入不规范日期症状:日期录入格式不统一,使用逗号做日期中的年月...

    Excel小白常常会有一些神一样的操作,给团队合作带来灾难,今天就一起来看看你中了几招?

    1、盲目合并单元格

    症状:

    特别喜欢合并单元格,不断合并单元格,甚至错位合并。

    b1a96d758cddacd873ea1634c5834f11.png

    后果:

    合并单元格之后,对后续的数据处理(排序、查询)等带来灾难性的伤害

    处方:

    纵向单元格尽量少合并,横向单元格使用跨列居中模拟合并单元格。

    d114e13c88caef9b6946552fccff0c2c.png

    2、录入不规范日期

    症状:

    日期录入格式不统一,使用逗号做日期中的年月间隔,或者干脆把多个日期放到一个单元格内。

    a74c1996fb86689dc57f80223cc62194.png

    后果:

    日期无法被Excel识别为“日期”,而被认为是普通的文本,无法进行日期计算。

    处方:

    所有的日期格式按照格式中的日期格式进行设置,不要突发奇想;

    绝对不要在同一个单元格中放置一个以上的日期。

    0bc8dcec7aff7f401d2c603ac859e415.png

    3、多条内容放到一个单元格

    症状:

    在一个单元格输入多项内容,或者把单位和数值输入在同一个单元格中。

    26f18c59c8e3a79fcc2153362a3a59f4.png

    后果:

    录入的数据无法筛选,无法计算。

    处方:

    保持每一条数据的唯一性,千万不能将不同类型的内容输在同一个单元格中。

    4、同一列输入不同类别的数据

    症状:在同一列、同一个字段下,输入多种不同类型的数据。如下图的B列:

    0bc52cbfd8de886765d71bd8ac5b48f3.png

    后果:

    数据结构完全被破坏,无法对原始数据进行报表、数据透视等操作

    处方:

    剁手重做,一列内仅输入同一类型的数据。

    5、随意隐藏单元格

    症状:不要的单元格不是删掉,而是隐藏,而且多处隐藏;病症比较深的时候,行和列都有隐藏。

    bd62852666f5ced10c0ff38f214aa746.png

    后果:

    发Excel文件发给伙伴之后,一不小心就取消了隐藏,然后不知道那些数据是需要不需要的,特别是对方又点击了保存之后。

    处方:

    不需要的数据果断删掉

    6、使用文本框或是批注记录数据

    症状:在Excel数据表中突然出现文本框,有时是因为需要强调突出,有时是因为懒。

    7cbb2763b8b8ad79ed49fa35cf8b7eee.png 

    后果:

    一旦Excel文件进行了多人共享,文本框将无法编辑。批注中的内容除了目测,也无法直接作为汇总的条件。

    处方:

    需要突出显示的文字可以使用不同的颜色,需要特别说明的文字另起一列使用备注。

    7、单元格内使用空格换行

    症状:

    不知道在Excel单元格中如何正确控制换行,通过敲击空格实现单元格内的换行。

    2a0d2cfc3e82fff5559e3a2886d5d7ef.png

    后果:

    敲击空格容易,删掉空格却很难;当你的单元格大小改变时,就需要重新敲击了。

    处方:

    使用Alt+Enter强制单元格内的文字换行。

    8、使用空格对齐

    症状:

    主要出现在录入人名时,两个字和三个字的人名对不齐,此时使用空格补足。

    a343a10d2d6204664e06a5a98721ade2.png

    后果:

    加入空格之后,“李   想”这个名字就不是“李想”了,对数据的查询汇总带来麻烦。

    处方:

    字数不等的单元格使用单元格格式中的分散对齐。

    64f0c80adb9e6a712c28b67e1bf94278.png

    9、一段文字分成多行

    症状:明明是一段文字,却分成多行写在不同的单元格中。

    你又不是写诗,不要这样断句。

    53de880aa99ba43de32dce18f75e6f6c.png

    后果:

    等你想把这段和复制出来的时候你就懵逼了。

    处方:一段文字,尽量放入同一个单元格。

    作者:安伟星

    原载公众号:精进Excel

    展开全文
  • 如果是一维数组的排序,那么很多人可能还会去用一些排序的算法代码,但是如果要排序数据是多维,或者是多行多列的单元格区域需要进行多个字段多条件的排序时,这时候为了效率,强烈推荐用内置的excel排序功能。...

    在写vba项目时,经常会遇到需要对结果进行排序的情况。

    如果是一维数组的排序,那么很多人可能还会去用一些排序的算法代码,但是如果要排序的数据是多维,或者是多行多列的单元格区域需要进行多个字段多条件的排序时,这时候为了效率,强烈推荐用内置的excel排序功能。

    把多维数组先赋值到单元格区域中,然后用内置的excel排序功能进行排序,即节省了时间又减少了代码量。

    如下图所示:

    8d9e64cb44b6f4ac4a88c1fb0fd6b09d.png

    如果要在vba中对A1:B7单元格区域按照销售额进行排序,这里提供一个模板代码,日后只需简单修改就可以应用到其它场景:

    Sub 调用excel内置的排序功能()    'QQ:1722187970,微信:xycgenius,公众号:水星excel    Dim oWK As Worksheet    Set oWK = Excel.Worksheets("Sheet1")    Dim oSort As Sort    Dim iRow As Long    With oWK        '获取要排序的区域的最后一个单元格所在的行号        iRow = .Range("a65536").End(xlUp).Row        Set oSort = .Sort        With oSort            '删除原来的排序字段            .SortFields.Clear            '添加新的排序字段,第一个关键字            .SortFields.Add Key:=oWK.Range("a1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers            '添加新的排序字段,第二个关键字            .SortFields.Add Key:=oWK.Range("b1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal            '设置排序的单元格区域            .SetRange oWK.Range("a1:b" & iRow)            '设置排序的方法            .SortMethod = xlPinYin            '设置排序的方向            .Orientation = xlSortColumns            '设置是否包含列标题            .Header = xlYes            '开始排序            .Apply        End With    End WithEnd Sub

    在vba中调用excel的排序功能,主要是操作Sort对象,首先用SortFields.Clear清除所有的排序字段,然后再用SortFields.Add方法添加排序字段,也就是以哪个字段按照升序或者降序排序,然后用Sort.SetRange设置排序区域,最后用Sort.Apply应用排序。

    展开全文
  •  如果是多行多列区域数据排序,可以参考下面的方法来实现。  下面我们以一个实例加以讲解。详见下图。  其中A到E列为原始数据,如何将A1至E8区域的数据,让每行的数据按照从小到大的顺序重新排序?  ...

           在前面教程讲过一些使用RANK函数和“数据/排序”菜单来实现excel教程中的排序操作。使用排序的方法通常只能解决一行或一列数字的排序。

      如果是多行或多列区域数据排序,可以参考下面的方法来实现。

      下面我们以一个实例加以讲解。详见下图。

    excel排序实例

      其中A到E列为原始数据,如何将A1至E8区域的数据,让每行的数据按照从小到大的顺序重新排序?

      excel教程数据排序的操作步骤是这样的:

      单击G1单元格,在编辑栏输入公式:=SMALL($A1:$E1,COLUMN(A1)),确定。并再次选中G1单元格,向右复制至K1单元格。然后再选中G1:K1单元格区域,向下复制公式至K8单元格结束。

      通过公式的形式,即可完成数据从小到大的排序。注:如果是将数据按照从大到小来排序,只需将SMALL变为LARGE即可。

      完成排序操作后,也可以根据实际需要隐藏原数据列A:E区域;也可以将G:K列的数据复制后,进行选择性粘贴-数值,覆盖原始数据列。

           对excel感兴趣的朋友可加Excel学习交流群:284029260

      Excel排序关联阅读文章:
      《excel 教程列排序实例讲解》
      《excel 教程排名函数公式讲解》

    展开全文
  • 技巧93 单列数据转为多行多列数据 技巧94 数据区域的复杂转换 第11章 排序 技巧95 包含标题的数据表排序 技巧96 无标题的数据表排序 技巧97 以当前选定区域排序 技巧98 对局部数据排序 技巧99 超过3个...
  • 3.导入图片到多行多列:在工作表中批量导入图片,且显示为多行多列,具体列数可以自定义,图片的高度也可以自定义。 4.导入图片到合并区域:批量导入图片和图片名称到工作表中,存放图片名称的单元格允许是合并...
  • Excel技巧大全

    2015-05-06 07:21:37
    17. 在Excel工作簿间快速切换 10 18. 快速获取帮助 11 19. 创建帮助文件的快捷方式 11 20. 双击单元格某边移动选定单元格 11 21. 双击单元格某边选取单元格区域 11 22. 快速选定不连续单元格 11 23. 根据条件...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    列数据合计成一列 统计汉字字符个数 关于取数 统计单元格内不为空的格数 自动将销量前十名的产品代号及销量填入表中 统计最大的连续次数3个“不重复”个数统计在一列有重复的姓名中,如何统计出具体有几人 计数的...
  • Excel百宝箱

    2012-10-27 17:09:21
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • 列数据合计成一列 统计汉字字符个数 关于取数 统计单元格内不为空的格数 自动将销量前十名的产品代号及销量填入表中 统计最大的连续次数3个“不重复”个数统计在一列有重复的姓名中,如何统计出具体有几人 计数的...
  • Excel百宝箱8.0

    2011-06-07 21:32:17
    可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • 17. 在EXCEL工作簿间快速切换 15 18. 快速获取帮助 16 19. 创建帮助文件的快捷方式 16 20. 双击单元格某边移动选定单元格 16 21. 双击单元格某边选取单元格区域 17 22. 快速选定不连续单元格 17 23. 根据条件...
  • Excel百宝箱9.0无限制破解版

    热门讨论 2012-02-03 19:05:29
    【批量导入图片(自动排版)】:批量导入图片,且自动排版,可多行多列排版,可任意指定图片大小与路径 【批量导入图片到批注】:批量地将图片导入到批注中,可以自由设定图片显示大小 【删除所有图片】:删除当前表...
  • 04186删除多行多列 04187删除工作表的全部单元格 04188移动单元格 04189复制单元格(复制全部内容) 04190复制单元格的值(PasteSpecial方法) 04191复制单元格的值(Value属性) 04192复制单元格的数据和公式...
  • 可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号。 函数名称:颜色求和 函数功能与参数:按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域。 函数名称:颜色计数 函数功能与...
  • 17. 在EXCEL工作簿间快速切换 10 18. 快速获取帮助 11 19. 创建帮助文件的快捷方式 11 20. 双击单元格某边移动选定单元格 11 21. 双击单元格某边选取单元格区域 11 22. 快速选定不连续单元格 11 23. 根据条件...
  • 17. 在EXCEL工作簿间快速切换 15 18. 快速获取帮助 16 19. 创建帮助文件的快捷方式 16 20. 双击单元格某边移动选定单元格 16 21. 双击单元格某边选取单元格区域 17 22. 快速选定不连续单元格 17 23. 根据条件...
  • 可以选择多行多列,按先行后列之方式返回值.两个参数,一为区域一为序号 颜色求和按背景颜色对区域值求和。第一参数为参照值,第二参数为求和区域 颜色计数按背景颜色计算区域中同背景之数据个数。第一参数为参照值。...
  • EXCEL集成工具箱V6.0

    2010-09-11 01:44:37
    【工作表拆分】 将当前工作表的某列数据按指定条件拆分成个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 ...
  • 【转置选区值】 将选中存储格区域内容自动识别行转置为列与列转置为行,支持多行多列相互转置并且能保留转置前的多样格式。 【数字符分离】 将存储格的内容按需求进行字符分离与表达式计算。(1-只保留数字. 2-只...
  • 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 ...
  • 第7章 数据绑定控件

    2011-05-27 11:23:57
    实例212 GridView自动求和及合并多列多行 单元格 336 实例213 GridView合并行或列单元格的5种 通用方式 338 实例214 GridView删除数据时弹出确认对话框 (含内容提示) 340 实例215 GridView数据源为空时显示表头和 ...
  • 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 ...
  • 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 【查找...
  • 假设你返回的数据格式化之后该附近数据有相同,则会自动合并成一个单元格,默认不开启合并。 autoCount table 开启显示统计行,设置autoCount为true,则该可以自动统计,默认为false。 fixed fixed设置为...
  • 按一列和多列排序 分页 使用过滤行和过滤输入进行过滤 分组 树表 可扩展行 单元格和行编辑 键盘导航 选拔 细胞验证 按需加载 响应列 多行页眉和页脚 粘性柱 粘页眉 列重新排序 数据导出到Excel,PDF,HTML,CSV,...
  • 导入excel(支持颜色,字体,背景,批注,对齐,图片等基本Excel属性); 表格合并单元(支持注解合并,支持自动合并); 支持其他刷新框架SmartRefreshLayout; 可配置表格最小宽度(小于该宽度自动适配); 支持直接List...
  • 百宝箱4.0简体2003

    2008-09-24 15:15:30
    支持多行单列及多行多列。 建立底端标题 EXCEL顶端标题的延伸。可以使1至6行底端行插入到每页页尾。 按颜色筛选 将区域按颜色进行筛选,先选中一个单元格再点本工具,其它颜色隐藏。 建立带圈编号 弥补EXCEL 仅仅...
  • 实例252 在ListView控件中对数据排序 实例253 在ListView控件中绘制底纹 实例254 在列表视图中拖动视图项 实例255 使ListView控件中的选择项高亮显示 实例256 制作带复选框的ListView控件 11.7 选择类控件应用...
  • 实例252 在ListView控件中对数据排序 实例253 在ListView控件中绘制底纹 实例254 在列表视图中拖动视图项 实例255 使ListView控件中的选择项高亮显示 实例256 制作带复选框的ListView控件 11.7 选择类控件应用...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
热门标签
关键字:

excel多行多列数据排序