Python 3.x: Pandas Dataframe Как изменить имена столбцов для определенного диапазона? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть большой CSV-файл, который я читаю, используя панд.Ниже приведена часть того, как выглядят мои данные.Имена столбцов: 0,4,6,8,10,12,14,16,18.

0   4   6   8   10  12  14  16  18
-2  4500    4500    4500    4500    4500    4500    4500    4500
-1  4650    4650    4650    4650    4650    4650    4650    4650
0   0   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0   0
2   0   0   0   0   0   0   0   0
3   0   0   0   0   0   0   0   0
4   0   0   0   0   0   0   0   0
5   0   0   0   0   0   0   0   0
6   0   0   0   0   0   0   0   0
7   0   0   0   0   0   0   0   0
8   0   0   0   0   0   0   0   0
9   0   0   0   0   0   0   0   0
10  0   0   0   0   0   0   0   0
11  0   0   0   0   0   0   0   0
12  0   0   0   0   0   0   0   0
13  0   0   0   0   0   0   0   0

Если я использую Data.columns, я могу изменить имена столбцов.Однако я хочу изменить только часть имени столбца.Например, я хочу изменить столбец 6,8,10 на птицу, собаку, клубнику, киви, дерево, шоколад и снег соответственно.

0   4   bird    dog strawberry  kiwi    tree    chocolate   snow
-2  4500    4500    4500    4500    4500    4500    4500    4500
-1  4650    4650    4650    4650    4650    4650    4650    4650
0   0   0   0   0   0   0   0   0
1   0   0   0   0   0   0   0   0
2   0   0   0   0   0   0   0   0
3   0   0   0   0   0   0   0   0
4   0   0   0   0   0   0   0   0
5   0   0   0   0   0   0   0   0
6   0   0   0   0   0   0   0   0
7   0   0   0   0   0   0   0   0
8   0   0   0   0   0   0   0   0
9   0   0   0   0   0   0   0   0
10  0   0   0   0   0   0   0   0
11  0   0   0   0   0   0   0   0
12  0   0   0   0   0   0   0   0
13  0   0   0   0   0   0   0   0

Как бы вы написали код?Помните, что у меня есть массивный файл, и я хочу сделать масштабное изменение для большого числа столбцов.Поэтому мне понадобится эффективная строка кода для этого ...

Спасибо!

Редактировать: я хотел выразить желание изменить имена столбцов, начиная с третьего столбца.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Поскольку вы хотите переименовать все столбцы, начиная с 3, вы можете использовать zip, чтобы создать диктовку, а затем переименовать:

# sample data
df = pd.DataFrame(np.random.randn(5,9), columns=[0,4,6,8,10,12,14,16,18])

# create a dict using zip from df.columns[2:]
d = dict(zip(df.columns[2:].values, ['bird','dog','strawberry','kiwi','tree','chocolate','snow']))

# rename you columns
df = df.rename(columns=d)

          0         4      bird       dog  strawberry      kiwi      tree  \
0 -0.121085  1.263364 -0.008604 -0.240872    1.433633  0.092023 -0.903776   
1  0.570377  0.565611 -1.107842  1.498852   -0.655996 -1.215298  0.639862   
2  0.367796 -1.357311 -0.106241 -0.824072    1.055168  0.862952  0.475000   
3  0.945560  0.359249 -0.282965  0.230909   -2.278477  1.656094 -0.031756   
4 -0.611121 -0.159064 -0.711482  2.342169    0.044782 -0.955120  1.481766   

   chocolate      snow  
0   0.607185  0.694980  
1  -0.666239  0.208806  
2   0.018151 -0.656670  
3  -0.438527  0.678592  
4   1.035624  0.537486  
0 голосов
/ 08 февраля 2019
import pandas as pd

example_list = [
    {'name' : 'a',
    'age' : 2,
    'gender' : 'm'},
    {'name' : 'b',
    'age' : 5,
    'gender' : 'm'
    }]
df = pd.DataFrame(example_list)
print(df)

df.rename(columns = {'name':'First Name'}, inplace = True)
print(df)

Выход

   age gender name
0    2      m    a
1    5      m    b

   age gender First Name
0    2      m    a
1    5      m    b

РЕДАКТИРОВАТЬ:

import pandas as pd

example_list = [
    {
        0 : 'a',
        4 : 2,
        6 : 'm'},
    {
        0 : 'b',
        4 : 5,
        6 : 'm'
    }]
df = pd.DataFrame(example_list)
print(df)

df.rename(columns = {0:'apple', 4 : 'bannana', 6 : 'pear'}, inplace = True)
print(df)

ВЫХОД:

   0  4  6
0  a  2  m
1  b  5  m

apple  bannana pear
0    a      2    m
1    b      5    m
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...