昨晚试试 数据行转列,差点翻了车


作者:朱小五
来源:凹凸数据

大家好,我是小五

昨晚遇到一道数据行转列问题,差点翻了车,跟大家分享一下。

先跟大家讲一下,常见的行转列一般是这种形式:


通常用来考察“如何用SQL、或者Python实现?”

昨天群里有个朋友问了一道类似的题,我张嘴就来。


结果拿来测试表一看,翻车了啊!这并不是常见的那种行转列啊!

相当于分组筛选,然后横向拼接到一起?这思路也不对啊

不过既然是行转列,就先用df.pivot()莽一莽吧。df.pivot()可以将长数据集转换成宽数据集,对于改变DataFrame 的结构往往使用它或者数据透视表。

df.pivot(index=None, columns=None,values=None)

df.pivot()就三个参数,其中index、values非必填,产生的缺省值,会用NaN填充。

先导入测试表

df = pd.read_excel('测试.xlsx',header=0,encoding='utf-8').astype(str)

再看一下想要达到的成果


所以需要设置 columns='小组',values='姓名',不过这里 values 设置与否意义不大,因为一共两列,省略设置values的话,姓名自然会成为新DataFrame 的 values。

  • 依据:没有设置values时,则将其他的 column values 全部作为新DataFrame 的 values

    看到充满了NaN,第一时间想到了dropna(),问题是每一行/列都有NaN,一删就删没了。


所以最后采用了df.apply的形式,将每列数据作为Series的数据结构单独删去NaN,这样就不会影响其他列了。

df.pivot(columns='小组').apply(lambda x: pd.Series(x.dropna().values))



一行Python成功解决!

本文相关源码+测试数据集下载:

https://alltodata.cowtransfer.com/s/3855bebc4f254a

参考资料

[1]
Pandas_规整数据_转换数据_pivot(): https://blog.csdn.net/mingkoukou/article/details/82852275

本文纯属抛砖引玉,如果有更好的方法快在评论区告诉我吧!

不知道大家对正常版本的行转列感兴趣不?点个在看众筹文章吧

©著作权归作者所有:来自51CTO博客作者mb5fe18e5a55d8d的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Python探索性数据分析,这样才容易掌握
  2. 用 Python 读取巴菲特最近的持仓数据
  3. 全息金融行业数据安全解决方案
  4. 用Excel、SQL、Python做数据分析有何不同?
  5. 如何正确的获取数据?
  6. 数据分析和数据科学的四个时代
  7. 用Python分析5187位CSDN博主数据,顺便把昨天扒掉的裤子穿上
  8. 2019年1-5月文章汇总 | Python数据之道
  9. 用 Python 分析了 20 万场吃鸡数据

随机推荐

  1. Android处理EditText键盘自动隐藏
  2. Android开发艺术探索 第2章 IPC机制(部分
  3. Android中判断网络功能是否可用
  4. Android 系统字体和颜色样式
  5. Android(安卓)面试题及答案(英文)
  6. 在android 中开发java.net.SocketExcepti
  7. Android 网络多线程断点下载
  8. Android 设置系统SystemUI 顶部StatusBar
  9. Android之发送短信和接收验证码
  10. android应用去掉title bar 及全屏处理方