[英]python rename multiple columns and roundup dataframe
import pandas as pd
sample = pd.DataFrame({'k1':[1.1455,2.444,3.5,4.9],
'k2':['b','c','d','e']})
sample.rename(columns = {
'k1' : '3',
'k2' : '5'},inplace = True)
def rename1(df):
print(df)
test1 = df.rename(columns = {
'k1' : 'num',
'k2' : 'name'},inplace = True)
print(test1)
return test1
rename1(sample)
def rename2(df):
print(df)
test2 = []
test2 = df.rename(columns = {
'k1' : df['num'].apply(lambda num : int(round(num))),
'k2' : df['name']},inplace = True)
print(test2)
return test2
rename2(sample)
print(sample['k1'].apply(lambda num : int(round(num))))
num name
0 1 b
1 2 c
2 4 d
3 5 e
這是我的樣本數據。 我是python的新手。 我正在嘗試為我的數據框重命名多個列,但我不知道問題。
我覺得需要分開這兩個操作-第一rename
,然后round
柱Series.round
采用鑄造到integer
由s astype
:
sample.rename(columns = {
'k1' : 'num',
'k2' : 'name'},inplace = True)
sample['num'] = sample['num'].round().astype(int)
print (sample)
num name
0 1 b
1 2 c
2 4 d
3 5 e
為什么輸出不是?
因為inplace=True
就地工作,這意味着沒有必要的分配。
df.rename(columns = {
'k1' : 'num',
'k2' : 'name'},inplace = True)
但如果想要分配刪除inplace=True
:
test1 = df.rename(columns = {
'k1' : 'num',
'k2' : 'name'})
如果存在矢量化替代方案,則應更好地避免應用解決方案。 各種操作執行的一般優先順序
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.