python pandas同时对多列进行赋值

编程入门 行业动态 更新时间:2024-10-27 12:39:05

python pandas同时对多列进行<a href=https://www.elefans.com/category/jswz/34/1769111.html style=赋值"/>

python pandas同时对多列进行赋值

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 pdchengji=[[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 Serieschengji = [['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)

更多推荐

python pandas同时对多列进行赋值

本文发布于:2024-02-12 22:54:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1689718.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:赋值   python   pandas

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!