精华内容
下载资源
问答
  • 多值列
    万次阅读 多人点赞
    2019-02-22 17:48:15

    假设某一列数据包含多个信息

    idattrs
    A1,2,5,3
    B3,1,2,5
    C1,2,0,3
    D1,7,5,3
    E2,1,6,8

    我们想把他拆分成多列,做法如下:

    首先进行拆分 data_df = data_df['attrs'].str.split(',', expand=True)

    然后用pd.concat把多列加回data_df,pd.concat([], axis=1, names=new_names)

    合起来就是

     pd.concat([data_df, data_df['attrs'].str.split(',', expand=True)], axis=1,names=new_names)

     

    运行结果如下:

    idnew_col1new_col2new_col3new_col4
    A1253
    B3125
    C1203
    D1753
    E2168
    更多相关内容
  • 在进行数据分析的时候,往往需要把数据表格中的多值列拆分成二值列。如图1中的表A所示,fruits为一个多值列,值可以是不同的水果名字,表明某个以ID作为标识的人吃水果的记录。现在的需求是要把是否吃了什么具体水果...

    在进行数据分析的时候,往往需要把数据表格中的多值列拆分成二值列。如图1中的表A所示,fruits为一个多值列,值可以是不同的水果名字,表明某个以ID作为标识的人吃水果的记录。现在的需求是要把是否吃了什么具体水果拆成多个列,最终如表B所示。在这个例子中,吃水果的记录还有重复,所以需要把重复的记录去掉。

    具体来说,可以将这个任务拆分成多个步骤,由不同的SQL select语句完成。如图2所示。这儿使用的数据库是DB2。


    图1


    图2

    1. 拆分列

    从表A到A1的过程重点是需要将每一行中的水果名字转化成相应新列的0/1值。

    select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana
      from A;


    2. 去重

    可以看到,id为3的记录重复出现了。因此需要用group by去掉重复的。这次的查询是基于上一次的结果,因此我们用with将上一次的查询包含进来。

    with q1 as (
      select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana
      from A
    )
    select *
      from q1
      group by id, apple, banana;


    3. 整合行

    A2中,id为2的记录出现了2次,可以把相应的列的值整合起来。同样用with将第二次的查询包含进来。

    with q1 as (
      select id, INSTR(fruits, 'apple') as apple, INSTR(fruits, 'banana') as banana
      from A
    ), q2 as (
      select *
      from q1
      group by id, apple, banana
    )
    select id, sum(apple) as apple, sum(banana) as banana
      from q2
      group by id;



    展开全文
  • 1、针对1对,查询合并多列的情况场景解决方案: SELECT t.news_id, t.sentiment_label AS '情感', ( CASE WHEN t.sentiment_label=1 then '负面' WHEN t.sentiment_label=2 then '中性' ELSE '正面' END ) as...

    1、针对1对多,查询合并多列的情况场景解决方案:

    SELECT
    	t.news_id,
    	t.sentiment_label AS '情感', ( 
    CASE WHEN    t.sentiment_label=1
    then '负面'
    WHEN    t.sentiment_label=2
    then '中性'
    ELSE   '正面'
    END
    ) as  '情感描述'
    FROM
    	tbm_popular_feelings t
    WHERE
    	t.sentiment_label IS NOT NULL
    AND t.create_time BETWEEN '2021-01-10 09:55:00'
    AND '2021-01-14 09:55:00'
    ORDER BY   t.id  desc;

     

    运行结果:

    2、合并结果,多列为一列:

    运行的SQL语句:

    关键字:

        GROUP_CONCAT(t.sentiment_label) AS '情感'

    	SELECT
    		t.news_id,
    			GROUP_CONCAT(t.sentiment_label) AS '情感'
    	FROM
    		tbm_popular_feelings t
    	WHERE
    		t.sentiment_label IS NOT NULL
    	AND t.create_time BETWEEN '2021-01-10 09:55:00'
    	AND '2021-01-14 09:55:00'
     GROUP BY
     t.news_id;

     

    运行结果:

    3、进行编码枚举描述说明,进一步优化SQL显示结果更为友好:

    SELECT
    	t.news_id,
    	GROUP_CONCAT(t.sentiment_label) AS '情感',
    	GROUP_CONCAT(
    		CASE
    		WHEN t.sentiment_label = 1 THEN
    			'负面'
    		WHEN t.sentiment_label = 2 THEN
    			'中性'
    		ELSE
    			'正面'
    		END
    	) AS '情感描述'
    FROM
    	tbm_popular_feelings t
    WHERE
    	t.sentiment_label IS NOT NULL
    AND t.create_time BETWEEN '2021-01-10 09:55:00'
    AND '2021-01-14 09:55:00'
    GROUP BY
    	t.news_id;

    运行结果如下:

    看起来更为友好!

     

     

    展开全文
  • MySQL下将一数据分为多列显示,按照特定条件过滤

    MySQL根据指定列的值将一列分为多列显示

    情景:

    在某些系统设计中,多个含义的数据可能不是用多个字段去表示的,而是通过一个类型字段和值去存储,
    例如:某个系统中有多种金额类型,那么可能是通过三个字段进行存储:订单号、金额种类、金额。

    在进行查询的时候可能需要同时取出几种类型的数据。一般的做法是将改订单的各个种类数据都取出来,在后台使用代码拼接,但是其实还有一种方法。使用聚合和case来实现。

    参考方法:

    数据表结构

    现有一个翻译表 translate,有三个字段:keylanguagetranslate,分别表示:语言翻译结果

    需求

    现在要同时查出某个键的繁体中文英文并显示在一行,可以通过下面的方法实现:

    SQL语句

    # 将 translate 列按照语种分为两列显示
    SELECT 
    	`key`,
    	 GROUP_CONCAT((case when language = 'zh_HK' then translate ELSE null END)) as '繁体中文',
    	 GROUP_CONCAT((case when language = 'en_US' then translate ELSE null END)) AS '英文'
    FROM `translate` 
    GROUP BY `key`
    

    实现效果

    数据示例
    实现效果

    注意:此方法未做大数据性能测试,生产环境请自行测试。

    展开全文
  • 目标1:从d0数据框中,筛选出rs中包含 '2_161686082’中值的数据框 ** d1 = d0.loc[d0['rs']=='2_161686082'] d1 ** 目标2:从d0数据框中,筛选出rs中包含 ** l1=['2_161686082','ALGA0072703','ASGA0022902'...
  • 1. 逐行处理,当指定多列满足一定条件时,取这几列的最大作为该行的新列值. 2. 将日期划分为上、中、下旬并作为新 代码 1.按col_night,col_day,col_whole三生成标志字段rs_flag,并取它们的最大...
  • df.max()默认对每一取最大,如果要对某2取最大需要先转置再计算,df[“max”]=rr.loc[:,[“PE_ttm”,“PE_FY1”]].T.max()
  • 学习笔记-DataFrame求多列平均

    万次阅读 多人点赞 2020-02-28 01:46:43
    df = pd.DataFrame({'A': [1, 1, 1, 2, 2, 3, 3],'B':[1, 4, 3, 2, 1, 3, 3],'C':[1, 4, 3, 2, 1, 3, 3]}) df >>> A B C 0 1 1 1 1 1 4 4 2 1 3 3 3 2 2 2 4 2 1 1 5 3 3 3 6 3 3 3 # 求A, B 两列平均 df['D'] = ...
  • 这将产生以下输出-+--------+ | Number | +--------+ | 56 | | 78 | | 89 | | 98 | | 91 | | 96 | +--------+ 6 rows in set (0.00 sec) 以下是查询以获取列值的平均-mysql> select (sum...
  • pandas按照某一排序 按照多列排序

    万次阅读 多人点赞 2020-01-09 09:45:51
    按照某一排序 d = {'A': [3, 6, 6, 7, 9], 'B': [2, 5, 8, 0, 0]} df = pd.DataFrame(data=d) print('排序前:\n', df) ''' 排序前: A B 0 3 2 1 6 5 2 6 8 3 7 0 4 9 0 ''' res = df.sort_val...
  • MYSQL一个字段拼接成一函数group_concat示例函数相关配置 示例 1.单列多行合并单行单列展示 select group_concat(name) as name from student where classId = 1 执行结果如下图: 2.多列拼接,多列多行...
  • hive-对多列求最大的函数greatest()

    千次阅读 2021-08-02 20:39:51
    greatest (a,b,c,d,d) greatest 求的是某几列的最大,横向求最大(一行的多列记录求最大) 可在信贷额度策略的盖帽场景中使用。 和max()的区别? max(a) 纵向求最大(一的多行记录求最大)
  • 根据两列数据的自定义函数产生新的一数据def do_merchant(x,y): return y/x A_2Vehicle_count['vehicle_count']=map(lambda x,y:do_merchant(x,y),A_2Vehicle_count['ave_time'],A_2Vehicle_count['sum_time']) ...
  • 查询SQL一行多列的数据中最大

    千次阅读 2019-12-10 16:34:37
    union 操作符用于合并两个或个 select语句的结果集。 请注意,union 内部的 select 语句必须拥有相同数量的也必须拥有相似的数据类型。同时,每条select语句中的的顺序必须相同。SQLunion 语法SELECT ...
  • 大家平时在查询数据的时候,肯定会遇到需要将一变成一行; 第一种情况:显示在同一行的同一上 1、新建一个表test 可以参考:https://blog.csdn.net/heqiang525/article/details/90210326 里面的建表...
  • Example:将D和E分别与C比较,将D与E中较大的填充颜色。
  • 我认为您首先需要^{},而且似乎必须首先跳过7行:df = pd.read_excel('LTE_KPIs_up.xlsx', skiprows=7)#print (df)然后按^{}和^{}选择:^{pr2}$0 UE-triggered ERAB Setup Attempts1 UE-triggered ERAB Setup ...
  • 一.遇到的问题描述: 我遇到问题的数据比较复杂,下面以比较简单的数据为例说明问题,所以这些数据的含义是没有意义的,可以忽略数据的的具体意义。数据如下所示: import numpy as np import pandas as pd ...
  • pandas DataFrame 根据多列做判断,生成新的列值

    万次阅读 多人点赞 2018-03-06 21:49:51
    环境:Python3.6.4 + pandas 0.22主要是DataFrame.apply函数的应用,如果...如代码所示,判断如果城市名中含有ing字段且年份为2016,则新test赋为1,否则为0.import numpy as np import pandas as pd data = ...
  • 在求平均时,既可一次只对一行一或一个单元格区域求平均,也可以一次对多行多列个单元格区域包括不连续的单元格区域批量快速求平均;在批量求平均时,需要用快捷键才能实现。一、Ex...
  • python中表的平均

    千次阅读 2021-02-11 01:21:52
    用公式 / 求平均data = [[' ', ' Scarface ', ' Godfather', ' Avatar'],['Al Pachino ', ' 1', ' 1', ' -1'],['Marlon Brando ', ' -1',...
  • 【Hive】多列最大 或 数组最大

    万次阅读 2018-11-08 09:39:03
    当我们想要对多列同行之间进行比较时,可以尝试以下办法: 1.先将数值转换成数组array(),再对数组排序sort_array(),通过负值使其为降序; select -sort_array(array(-a,-b,-c))[0] as max_value from ( select...
  • python numpy指定最大,统计次数

    千次阅读 2021-04-30 00:51:37
    numpy获取指定最大,最大索引,统计次数 import numpy as np data=np.array([[1,2],[2,1],[3,4],[1,4]]) bb= np.max(data[:,1]) count_max= np.sum(data == bb) if count_max>1: print("jiaodu=...
  • 在做数据分析时,需要根据某一修改另外一,此时就需要使用pd.loc()函数。 例子, import pandas as pd x2 = pd.read_csv("submit.csv") x2 假如,我要修改id=800000的isDefault的,代码: x2.loc[x2...
  • pandas 统计每的最大和最小值

    千次阅读 2021-05-15 17:12:30
    的最大: df.max() 每的最小值: df.min()
  • In the DataFrameimport pandas as pddf=pd.DataFrame({'col1':[1,2,3],'col2':[3,2,1],'col3':[1,1,1]},index= ['row1','row2','row3'])print dfcol1 col2 col3row1 1 3 1row2 2 2 1row3...
  • Python中将DataFrame类型的数据按某一拆分成个DataFrame类型的数据 1. 循环定义个变量 当定义变量的个数是n时,定义n个变量: 注: eval()函数和exec()函数的区别: eval()函数只能计算单个...
  • 有大区的为NULL或者为空,希望能跳过不统计。输出的csv文件需要有大区+销售大区+发货量+Message做了尝试结果:`import pandas as pdimport csvimport mathdf=pd.read_csv(r'G:\360MoveData\Users\Hasee\De...
  • dataframe 按条件替换某一中的方法如下所示:import pandas as pdcontent = ['T', 'F'] * 10data = pd.DataFrame(content, columns=['Y'])print(data)Y0 T1 F2 T3 F4 T5 F6 T7 F8 T9 F10 T11 F12 T13 F14 T15 ...
  • 「Excel技巧」Excel中根据某去汇总另外一 在Excel表格中输入数据,需要根据component分别汇总July。 1、选中单元格区域并点击“insert”选项卡中的“PivotTable”。 Next, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,290,699
精华内容 916,279
关键字:

多值列