добавить имена столбцов при использовании pandas.Dataframe удалить строки - PullRequest
1 голос
/ 11 октября 2019

Если я сделаю следующее, я получу фрейм данных с ключами словаря в качестве заголовков и значениями в строке:

d = {'a':['a'], 'b':['b'], 'c':['c']}
pd.DataFrame(d)

    a   b   c
0   a   b   c

Если я сделаю то же самое, но добавлю имена столбцов, фрейм данных будет пустым. ..

d = {'a':['a'], 'b':['b'], 'c':['c']}
pd.DataFrame(d, columns = [1,2,3])


  1   2   3

Почему?

Ответы [ 3 ]

2 голосов
/ 11 октября 2019

это происходит потому, что вы переиндексируете столбцы вашего фрейма данных в [0,1,2] и значения действительно существуют в 'a', 'b', 'c', тогда вам нужно:

d = {'a':['a'], 'b':['b'], 'c':['c']}
df=pd.DataFrame(d)
print(df)

   a  b  c
0  a  b  c

df.rename(columns={'a':0,'b':1,'c':2},inplace=True)
print(df)

   0  1  2
0  a  b  c

Также вы можете использовать:

df.columns=[0,1,2]

d = {'a':['a'], 'b':['b'], 'c':['c']}
df=pd.DataFrame(d)
print(df)
   a  b  c
0  a  b  c

df.columns=[0,1,2]
print(df)
   0  1  2
0  a  b  c
2 голосов
/ 11 октября 2019

Это происходит потому, что в ваших данных d нет значений / имен столбцов с именами 1, 2 и 3. Из pandas doc столбцы параметров:

столбцы: метки столбцов индекса или массива для использования в результирующем кадре. По умолчанию будет RangeIndex (0, 1, 2,…, n), если не указаны метки столбцов.

Здесь вы можете увидеть все три случая:

df = pd.DataFrame(d) #Uses default method for columns
print(df)

Выход:

   a  b  c
0  a  b  c

Передача значений RangeIndex в columns:

d = {'a':['a'], 'b':['b'], 'c':['c']}
pd.DataFrame(d, columns = [1,2,3]) #These values are not the RangeIndex values, but label values

Вывод:

Empty dataframe #Because there's no columns names 1, 2, or 3

Передача значений индекса в columns:

df = pd.DataFrame(d,columns = ['a','b','c'])
print(df)

Вывод:

   a  b  c
0  a  b  c
0 голосов
/ 11 октября 2019

Поскольку вы не переименовали столбец, вы создали новые, попробуйте:

d = {'a':['a'], 'b':['b'], 'c':['c']}
df=pd.DataFrame(d)

df.rename(columns = {'a': 1, 'b': 2, 'c':3})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...