python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值
如dataframe
data1['月份']=int(month) #加入月份和企業(yè)名稱 data1['企業(yè)']=parmentname
可以增加單列,并賦值,如果想同時(shí)對(duì)多列進(jìn)行賦值
data1['月份','企業(yè)']=int(month) , parmentname #加入月份和企業(yè)名稱
會(huì)出錯(cuò)
ValueError: Length of values does not match length of index
data[['合計(jì)','平均']]='數(shù)據(jù)','月份'
類似這樣的,也無(wú)效
KeyError: “None of [Index([‘合計(jì)', ‘平均'], 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=['語(yǔ)文','英語(yǔ)','數(shù)學(xué)','政治'])
print (data)
# data1=data[['數(shù)學(xué)','語(yǔ)文','英語(yǔ)','政治']] #排序
# data1=data1.reset_index(drop=True) #序列重建
# data1.index.names=['序號(hào)'] #序列重命名
# data1.index=data1.index+1 #序列從1開(kāi)始
# print (data1)
data=pd.DataFrame(chengji,columns=['語(yǔ)文','英語(yǔ)','數(shù)學(xué)','政治'],index=[i for i in range(1,len(chengji)+1)])
print (data)
data[['合計(jì)','平均']]=data.apply(lambda x: (x.sum(), x.sum()/4),axis=1,result_type='expand')
print (data[:])
data=pd.DataFrame(chengji,columns=['語(yǔ)文','英語(yǔ)','數(shù)學(xué)','政治'],index=[i for i in range(1,len(chengji)+1)])
print (data)
data[['合計(jì)','平均']]=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
今天又遇到一個(gè)從某列截取字符串長(zhǎng)度寫(xiě)到另一列的,也一并寫(xiě)到這里:
貨品列在原表中無(wú),取貨品代碼的前12位。
totaldata = totaldata.reset_index(drop=False) totaldata['貨品'] = totaldata['貨品代碼'].apply(lambda x:x[:12])
后記:2020.5.17又遇到想新增兩列并賦值的問(wèn)題
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[['序號(hào)','列名']]=data[['p','x']] #pd.DataFrame(data[['p','x']])# .apply(lambda x : x ) print(data)
補(bǔ)充: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 的參數(shù)result_type 來(lái)處理
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打包返回結(jié)果來(lái)處理
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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
python將unicode和str互相轉(zhuǎn)化的實(shí)現(xiàn)
這篇文章主要介紹了python將unicode和str互相轉(zhuǎn)化的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-05-05
python celery beat實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼
在日常工作中,我們常常會(huì)用到需要周期性執(zhí)行的任務(wù),本文主要介紹了python celery beat實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
python神經(jīng)網(wǎng)絡(luò)使用tensorflow構(gòu)建長(zhǎng)短時(shí)記憶LSTM
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)tensorflow構(gòu)建長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)LSTM,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Python的Flask框架應(yīng)用程序?qū)崿F(xiàn)使用QQ賬號(hào)登錄的方法
利用QQ開(kāi)放平臺(tái)的API使用QQ賬號(hào)登錄是現(xiàn)在很多網(wǎng)站都具備的功能,而對(duì)于Flask框架來(lái)說(shuō)則有Flask-OAuthlib這個(gè)現(xiàn)成的輪子,這里我們就來(lái)看一下Python的Flask框架應(yīng)用程序?qū)崿F(xiàn)使用QQ賬號(hào)登錄的方法2016-06-06
Python 如何強(qiáng)制限定小數(shù)點(diǎn)位數(shù)
這篇文章主要介紹了Python 強(qiáng)制限定小數(shù)點(diǎn)位數(shù)的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Django利用Cookie實(shí)現(xiàn)反爬蟲(chóng)的例子
這篇文章主要介紹了Django利用Cookie實(shí)現(xiàn)反爬蟲(chóng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
關(guān)于Pycharm安裝第三方庫(kù)超時(shí) Read time-out的問(wèn)題
這篇文章主要介紹了關(guān)于Pycharm安裝第三方庫(kù)超時(shí) Read time-out的問(wèn)題, 找了幾個(gè)命令都不是很好用,最后找到解決的步驟,感興趣的朋友跟隨小編一起看看吧2021-10-10
python執(zhí)行等待程序直到第二天零點(diǎn)的方法
這篇文章主要介紹了python執(zhí)行等待程序直到第二天零點(diǎn)的方法,涉及Python等待程序的實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-04-04
python中readline判斷文件讀取結(jié)束的方法
這篇文章主要介紹了python中readline判斷文件讀取結(jié)束的方法,實(shí)例形式詳細(xì)分析了Python中readline的用法,需要的朋友可以參考下2014-11-11
Python爬蟲(chóng)之urllib基礎(chǔ)用法教程
這篇文章主要為大家詳細(xì)介紹了Python爬蟲(chóng)1.1 urllib基礎(chǔ)用法教程,用于對(duì)Python爬蟲(chóng)技術(shù)進(jìn)行系列文檔講解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10

