Helpex - Trao đổi & giúp đỡ Đăng nhập
159

Tôi đang tìm kiếm một cách thanh lịch để thay đổi tên cột được chỉ định trong a DataFrame.

chơi dữ liệu ...

import pandas as pd
d = {
         'one': [1, 2, 3, 4, 5],
         'two': [9, 8, 7, 6, 5],
         'three': ['a', 'b', 'c', 'd', 'e']
    }
df = pd.DataFrame(d)

Giải pháp thanh lịch nhất mà tôi đã tìm thấy cho đến nay ...

names = df.columns.tolist()
names[names.index('two')] = 'new_name'
df.columns = names

Tôi đã hy vọng cho một lớp lót đơn giản ... nỗ lực này đã thất bại ...

df.columns[df.columns.tolist().index('one')] = 'another_name'

Bất kỳ gợi ý nhận được biết ơn.

159 hữu ích 0 bình luận 221k xem chia sẻ
297

Một lớp lót tồn tại:

In [27]: df=df.rename(columns = {'two':'new_name'})

In [28]: df
Out[28]: 
  one three  new_name
0    1     a         9
1    2     b         8
2    3     c         7
3    4     d         6
4    5     e         5

Sau đây là chuỗi doc cho renamephương thức.

Định nghĩa: df.rename (tự, chỉ mục = Không, cột = Không, sao chép = Đúng, inplace = Sai)
Dây đeo:
Thay đổi chỉ mục và / hoặc cột bằng chức năng nhập hoặc
chức năng. Các giá trị hàm / dict phải là duy nhất (1 trên 1). Nhãn không
chứa trong một dict / Series sẽ được giữ nguyên.

Thông số
----------
chỉ mục: giống như dict hoặc chức năng, tùy chọn
    Chuyển đổi để áp dụng cho các giá trị chỉ mục
cột: giống như dict hoặc chức năng, tùy chọn
    Chuyển đổi để áp dụng cho các giá trị cột
sao chép: boolean, mặc định Đúng
    Đồng thời sao chép dữ liệu cơ bản
inplace: boolean, mặc định Sai
    Có trả lại DataFrame mới hay không. Nếu đúng thì giá trị của bản sao là
    mặc kệ.

Xem thêm
--------
Series.rename

Trả về
-------
đã đổi tên: DataFrame (đối tượng mới)
297 hữu ích 0 bình luận chia sẻ
98

inplaceđối số có sẵn, bạn không cần phải sao chép và gán khung dữ liệu gốc cho chính nó, nhưng thực hiện như sau:

df.rename(columns={'two':'new_name'}, inplace=True)
98 hữu ích 0 bình luận chia sẻ
29

Thế còn?

df.columns.values[2] = "new_name"
29 hữu ích 4 bình luận chia sẻ
5

Pandas 0.21 hiện có tham số trục

Phương thức đổi tên đã đạt được một tham số trục để khớp với hầu hết các phần còn lại của API gấu trúc.

Vì vậy, ngoài việc này:

df.rename(columns = {'two':'new_name'})

Bạn có thể làm:

df.rename({'two':'new_name'}, axis=1)

hoặc là

df.rename({'two':'new_name'}, axis='columns')
5 hữu ích 2 bình luận chia sẻ
3

Nếu bạn biết cột # đó là gì (đầu tiên / giây / nth) thì giải pháp này được đăng trên một câu hỏi tương tự hoạt động bất kể nó được đặt tên hay không được đặt tên và trong một dòng: https://stackoverflow.com/a/26336314/ 4355695

df.rename(columns = {list(df)[1]:'new_name'}, inplace=True)
# 1 is for second column (0,1,2..)
3 hữu ích 0 bình luận chia sẻ
2

Để đổi tên các cột ở đây là một cột đơn giản sẽ hoạt động cho cả hai Default(0,1,2,etc;)cột hiện có và không hữu ích cho các tập dữ liệu lớn hơn (có nhiều cột).

Đối với tập dữ liệu lớn hơn, chúng ta có thể cắt các cột mà chúng ta cần và áp dụng mã dưới đây:

df.columns = ['new_name','new_name1','old_name']
2 hữu ích 0 bình luận chia sẻ
2

phiên bản gấu trúc 0.23.4

df.rename(index=str,columns={'old_name':'new_name'},inplace=True)

Đối với hồ sơ:

bỏ qua index = str sẽ đưa ra lỗi thay thế có một 'cột' đối số không mong muốn

2 hữu ích 0 bình luận chia sẻ
1

Theo mã ngắn có thể giúp:

df3 = df3.rename(columns={c: c.replace(' ', '') for c in df3.columns})

Xóa khoảng trắng khỏi cột.

1 hữu ích 0 bình luận chia sẻ
1

Một tùy chọn khác chỉ đơn giản là sao chép và thả cột:

df = pd.DataFrame(d)
df['new_name'] = df['two']
df = df.drop('two', axis=1)
df.head()

Sau đó, bạn nhận được kết quả:

    one three   new_name
0   1   a       9
1   2   b       8
2   3   c       7
3   4   d       6
4   5   e       5
1 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python pandas , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading