91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python 如何用pandas同時對多列進行賦值

發布時間:2021-03-15 10:52:54 來源:億速云 閱讀:2996 作者:TREX 欄目:開發技術

本篇內容主要講解“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 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

到此,相信大家對“python 如何用pandas同時對多列進行賦值”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨野县| 盐亭县| 河北省| 开平市| 庆阳市| 赞皇县| 临西县| 东乌珠穆沁旗| 清远市| 冷水江市| 吉林省| 保定市| 旺苍县| 新泰市| 乐亭县| 黔西县| 平湖市| 介休市| 剑阁县| 襄城县| 裕民县| 客服| 长宁区| 宁远县| 翁源县| 太仓市| 岳池县| 吴川市| 舒兰市| 铁岭市| 克山县| 康乐县| 防城港市| 宁海县| 河东区| 华池县| 宜昌市| 翼城县| 车致| 诸城市| 泽州县|