python 使用pandas同时对多列进行赋值

 更新时间:2021年03月12日 17:35:26   作者:weixin_45903952  
这篇文章主要介绍了python 使用pandas同时对多列进行赋值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

如dataframe

 data1['月份']=int(month) #加入月份和企业名称
 data1['企业']=parmentname

可以增加单列,并赋值,如果想同时对多列进行赋值

data1['月份','企业']=int(month) , parmentname   #加入月份和企业名称

会出错

ValueError: Length of values does not match length of index

data[['合计','平均']]='数据','月份'

类似这样的,也无效

KeyError: “None of [Index([‘合计', ‘平均'], dtype=‘object')] are in the [columns]”

只有下例中:

import pandas as pd
chengji=[[100,95,100,99],[90,98,99,100],[88,95,98,88],[99,98,97,87],[96.5,90,96,85],[94,94,93,91],[91, 99, 92, 87], [85, 88, 85, 90], [90, 92, 99, 88], [90, 88, 89, 81], [85, 89, 89, 82], [95, 87, 86, 88], [90, 97, 97, 98], [80, 92, 89, 98], [80, 98, 85, 81], [98, 88, 95, 92]]
data=pd.DataFrame(chengji,columns=['语文','英语','数学','政治'])
print (data)
# data1=data[['数学','语文','英语','政治']]    #排序
# data1=data1.reset_index(drop=True)   #序列重建
# data1.index.names=['序号']     #序列重命名
# data1.index=data1.index+1    #序列从1开始
# print (data1)
data=pd.DataFrame(chengji,columns=['语文','英语','数学','政治'],index=[i for i in range(1,len(chengji)+1)])
print (data)
data[['合计','平均']]=data.apply(lambda x: (x.sum(), x.sum()/4),axis=1,result_type='expand')
print (data[:])
data=pd.DataFrame(chengji,columns=['语文','英语','数学','政治'],index=[i for i in range(1,len(chengji)+1)])
print (data)
data[['合计','平均']]=data.apply(lambda x:('数据','月份'),axis=1,result_type='expand')
print (data[:])

应用apply 并设置result_type=‘expand' 参数才可以。

先前的例子,用如下的方法就行了

data1[['月份','企业']]=data1.apply(lambda x:(int(month),parmentname),axis=1,result_type='expand')
  # data1['月份']=int(month)   #加入月份和企业名称
  # data1['企业']=parmentname
  #print (data1)

后记:

如果'月份','企业'列存在,用如下也可,上例中,直接可以创建不存在的列。

data1.lco[:,['月份','企业']]=int(month),parmentname

data1[['月份','企业']]=int(month),parmentname

今天又遇到一个从某列截取字符串长度写到另一列的,也一并写到这里:

货品列在原表中无,取货品代码的前12位。

totaldata = totaldata.reset_index(drop=False)
totaldata['货品'] = totaldata['货品代码'].apply(lambda x:x[:12])

后记:2020.5.17又遇到想新增两列并赋值的问题

import numpy as np
import pandas as pd
from pandas import Series
 
chengji = [['N', 95, 0], ['N', 100, 88], ['N', 88, 100], ['N', 66, 0]]
data = pd.DataFrame(chengji, columns=['p', 'x', 'g'])
data[['序号','列名']]=data[['p','x']] #pd.DataFrame(data[['p','x']])# .apply(lambda x : x )
print(data)

补充:pandas 的apply返回多列,并赋值

代码如下:

import pandas as pd
df_tmp = pd.DataFrame([
 {"a":"data1", "cnt":100},{"a":"data2", "cnt":200},
])
df_tmp
a cnt
data1 100
data2 200

方法一:使用apply 的参数result_type 来处理

def formatrow(row):
 a = row["a"] + str(row["cnt"])
 b = str(row["cnt"]) + row["a"]
 return a, b 
 
df_tmp[["fomat1", "format2"]] = df_tmp.apply(formatrow, axis=1, result_type="expand")
df_tmp
a cnt fomat1 format2
data1 100 data1100 100data1
data2 200 data2200 200data2

方法二:使用zip打包返回结果来处理

df_tmp["fomat1-1"], df_tmp["format2-2"] = zip(*df_tmp.apply(formatrow, axis=1))
df_tmp
a cnt fomat1 format2 fomat1-1 format2-2
data1 100 data1100 100data1 data1100 100data1
data2 200 data2200 200data2 data2200 200data2

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 使用Selenium在Python中实现录屏功能

    使用Selenium在Python中实现录屏功能

    Selenium 是一个强大的用于自动化测试的工具,但你知道它也可以用来录制浏览器操作的视频吗?本文将介绍如何使用 Selenium 在 Python 中实现录屏功能,以便记录和分享你的网页操作过程,需要的朋友可以参考下
    2023-11-11
  • Python安装及Pycharm安装使用教程图解

    Python安装及Pycharm安装使用教程图解

    这篇文章主要介绍了Python安装以及Pycharm安装使用教程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • python 循环数据赋值实例

    python 循环数据赋值实例

    今天小编就为大家分享一篇python 循环数据赋值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python容器使用的5个技巧和2个误区总结

    Python容器使用的5个技巧和2个误区总结

    在本篇文章里小编给大家整理的是关于Python容器使用的5个技巧和2个误区的相关知识点内容,需要的朋友们学习下。
    2019-09-09
  • Flask之flask-script模块使用

    Flask之flask-script模块使用

    Flask Script扩展提供向Flask插入外部脚本的功能,这篇文章主要介绍了Flask之flask-script模块使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Expected conditions模块使用方法汇总代码解析

    Expected conditions模块使用方法汇总代码解析

    这篇文章主要介绍了Expected conditions模块使用方法汇总代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Python数据处理利器Pandas DataFrame常用操作

    Python数据处理利器Pandas DataFrame常用操作

    这篇文章主要为大家介绍了Python数据处理利器Pandas DataFrame,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • python基于三阶贝塞尔曲线的数据平滑算法

    python基于三阶贝塞尔曲线的数据平滑算法

    这篇文章主要介绍了python基于三阶贝塞尔曲线的数据平滑算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python按照某列内容对两个DataFrame进行合并操作方法

    Python按照某列内容对两个DataFrame进行合并操作方法

    这篇文章主要给大家介绍了关于Python按照某列内容对两个DataFrame进行合并操作的相关资料,文中通过代码示例介绍的非常详细,对大家学习或者使用Python具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Python 3中的yield from语法详解

    Python 3中的yield from语法详解

    在python 3.3里,generator新增了一个语法 yield from,这个yield from的作用是什么?语法是什么呢?下面通过这篇文章主要给大家详细介绍了Python 3中yield from语法的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01

最新评论