簡體   English   中英

python重命名多個列和roundup數據幀

[英]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)

案例1:不知道函數-rename列中的問題

def rename1(df):
    print(df)
    test1 = df.rename(columns = {
              'k1' : 'num',
              'k2' : 'name'},inplace = True)  

    print(test1)

    return test1
rename1(sample)

Q1:為什么輸出不是?

案例2:1。對數字進行綜合2.重命名所有列

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))))

Q2:如何正確地根據特定列整理值?

期待結果

     num  name
0       1  b
1       2  c
2       4  d
3       5  e

這是我的樣本數據。 我是python的新手。 我正在嘗試為我的數據框重命名多個列,但我不知道問題。

我覺得需要分開這兩個操作-第一rename ,然后roundSeries.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM