python dataframe实现行转列

在数据库里我们很容易实现行转列,但是有一个局限性就是列名一定要固定,否则就无法实现,但是在dataframe里有对应的函数可以很容易实现。

样例数据:

pubdate         media     cnt

2021-04-01    APP    2109
2021-04-01    微信    1297
2021-04-01    微博    1479
2021-04-02    APP    2719
2021-04-02    微信    1040
2021-04-02    微博    2699
2021-04-03    APP    2267
2021-04-03    微信    934
2021-04-03    微博    1581
2021-04-04    APP    1969

 处理过程:

sql ='''select pubdate,pubtype,count(DISTINCT docid) as cnt
from report_download_result_combine_dazzle_202104
GROUP BY pubdate,pubtype
limit 10;
'''
df = pd.read_sql(sql, conn)

df_1 = df.set_index(["pubdate", "pubtype"])["cnt"]
df_2 = df_1.unstack()
df_2 = df_2.reset_index()
print(df_2)

 最终结果:

pubtype    pubdate     APP      微信      微博
0       2021-04-01  2109.0  1297.0  1479.0
1       2021-04-02  2719.0  1040.0  2699.0
2       2021-04-03  2267.0   934.0  1581.0
3       2021-04-04  1969.0     NaN     NaN

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将PythonDataFrame进行行转列,可以使用pandas库中的pivot函数。首先,导入pandas库并创建一个DataFrame。然后,使用pivot函数将行转列,并指定id_vars参数为需要保留的列名,var_name参数为新列名的名称,value_name参数为新列中的值的名称。最后,打印转换后的DataFrame即可。以下是一个示例代码: ```python import pandas as pd # 创建一个DataFrame df = pd.DataFrame({ 'name': ['John', 'Mary', 'Peter'], 'math': [80, 90, 70], 'english': [70, 85, 90], 'science': [75, 95, 80] }) # 使用pivot函数将行转列 df_pivot = pd.melt(df, id_vars=['name'], var_name='subject', value_name='score') print(df_pivot) ``` 这段代码将创建一个包含姓名、科目和分数的DataFrame,然后使用pivot函数将行转列,将科目作为新的列名,将分数作为新列中的值。输出结果将展示转换后的DataFrame。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [python处理表格dataframe-如何实现行转列和列转行?](https://blog.csdn.net/xili1342/article/details/129442403)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [python dataframe astype 字段类型转换方法](https://download.csdn.net/download/weixin_38617451/13766295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值