您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“python 如何用pandas同時對多列進行賦值”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“python 如何用pandas同時對多列進行賦值”吧!
data1['月份']=int(month) #加入月份和企業(yè)名稱 data1['企業(yè)']=parmentname
可以增加單列,并賦值,如果想同時對多列進行賦值
data1['月份','企業(yè)']=int(month) , parmentname #加入月份和企業(yè)名稱
會出錯
ValueError: Length of values does not match length of index
data[['合計','平均']]='數(shù)據(jù)','月份'
類似這樣的,也無效
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=['語文','英語','數(shù)學','政治']) print (data) # data1=data[['數(shù)學','語文','英語','政治']] #排序 # data1=data1.reset_index(drop=True) #序列重建 # data1.index.names=['序號'] #序列重命名 # data1.index=data1.index+1 #序列從1開始 # print (data1) data=pd.DataFrame(chengji,columns=['語文','英語','數(shù)學','政治'],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=['語文','英語','數(shù)學','政治'],index=[i for i in range(1,len(chengji)+1)]) print (data) data[['合計','平均']]=data.apply(lambda x:('數(shù)據(jù)','月份'),axis=1,result_type='expand') print (data[:])
應(yīng)用apply 并設(shè)置result_type=‘expand' 參數(shù)才可以。
先前的例子,用如下的方法就行了
data1[['月份','企業(yè)']]=data1.apply(lambda x:(int(month),parmentname),axis=1,result_type='expand') # data1['月份']=int(month) #加入月份和企業(yè)名稱 # data1['企業(yè)']=parmentname #print (data1)
如果'月份','企業(yè)'列存在,用如下也可,上例中,直接可以創(chuàng)建不存在的列。
data1.lco[:,['月份','企業(yè)']]=int(month),parmentname
或
data1[['月份','企業(yè)']]=int(month),parmentname
今天又遇到一個從某列截取字符串長度寫到另一列的,也一并寫到這里:
貨品列在原表中無,取貨品代碼的前12位。
totaldata = totaldata.reset_index(drop=False) totaldata['貨品'] = totaldata['貨品代碼'].apply(lambda x:x[:12])
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
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
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
到此,相信大家對“python 如何用pandas同時對多列進行賦值”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。