создание нового столбца со строковым значением второго заголовка - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть следующий фрейм данных с двумя заголовками.Мне нужно создать новый столбец со строковым значением моего второго заголовка (Промышленный набор данных)

Region           Industrial production                                                          
Italia           5669   
Nord-ovest       1046   
Piemonte         447 

мой окончательный результат должен быть:

Industrial production   Region  Industrial production
Industrial production   Italia                   5669
Industrial production   Nord-ovest               1046
Industrial production   Piemonte                  447

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

В пандах вы не можете иметь два столбца с одинаковым именем, если вы попытаетесь создать еще один столбец с именем Industrial production, он заменит существующий:

In [2]: df
Out[2]: 
       Region  Industrial production
0      Italia                   5669
1  Nord-ovest                   1046
2    Piemonte                    447

In [3]: second = df.columns[1]

In [4]: second
Out[4]: 'Industrial production'

In [5]: df[second] = second

In [6]: df
Out[6]: 
       Region  Industrial production
0      Italia  Industrial production
1  Nord-ovest  Industrial production
2    Piemonte  Industrial production

Вам нужно дать этот новый столбецдругое имя, например Industrial production2.Затем вы можете создать его следующим образом:

In [2]: df
Out[2]: 
       Region  Industrial production
0      Italia                   5669
1  Nord-ovest                   1046
2    Piemonte                    447

In [3]: second = df.columns[1]

In [3]: df[second + "2" ] = second

In [4]: df
Out[4]: 
       Region  Industrial production Industrial production2
0      Italia                   5669  Industrial production
1  Nord-ovest                   1046  Industrial production
2    Piemonte                    447  Industrial production

В качестве альтернативы вы можете использовать df.assign следующим образом:

In [3]: df
Out[3]: 
       Region  Industrial production
0      Italia                   5669
1  Nord-ovest                   1046
2    Piemonte                    447

In [4]: df = df.assign(**{df.columns[1] + "2": df.columns[1]})

In [5]: df
Out[5]: 
       Region  Industrial production Industrial production2
0      Italia                   5669  Industrial production
1  Nord-ovest                   1046  Industrial production
2    Piemonte                    447  Industrial production
0 голосов
/ 07 декабря 2018

Если вы хотите сделать его индексом, вы можете использовать:

df.set_index ([list (df.columns.values) [1]], inplace = True).

Это займет второй столбец, или вы можете напрямую написать имя заголовка второго столбца.Код будет чем-то близким к этому.Надеюсь, что это помогает

...