Преобразуйте единый столбец данных pandas в ряд pandas [duplicate]

Программирование на интерфейс абсолютно не связано с абстрактными интерфейсами, как мы видим на Java или .NET. Это даже не концепция ООП.

На самом деле это не значит, что вы не обходитесь с внутренними элементами объекта или структуры данных. Используйте интерфейс абстрактной программы или API для взаимодействия с вашими данными. В Java или C # это означает использование общедоступных свойств и методов вместо необработанного доступа к полям. Для C это означает использование функций вместо необработанных указателей.

EDIT: И с базами данных это означает использование представлений и хранимых процедур вместо прямого доступа к таблице.

47
задан smci 29 August 2015 в 05:09
поделиться

5 ответов

Два подхода, которые приходят на ум:

>>> df
          A         B         C         D
0  0.424634  1.716633  0.282734  2.086944
1 -1.325816  2.056277  2.583704 -0.776403
2  1.457809 -0.407279 -1.560583 -1.316246
3 -0.757134 -1.321025  1.325853 -2.513373
4  1.366180 -1.265185 -2.184617  0.881514
>>> df.ix[:, 2]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C
>>> df[df.columns[2]]
0    0.282734
1    2.583704
2   -1.560583
3    1.325853
4   -2.184617
Name: C
73
ответ дан DSM 22 August 2018 в 08:42
поделиться
  • 1
    FYI df.ix теперь заменен на df.iloc – yosemite_k 26 October 2017 в 12:58
  • 2
    df [df.columns [2]] == & gt; вам будет жаль, если у вас несколько столбцов с тем же именем или без имени. – user48956 24 July 2018 в 03:39

Вы можете получить доступ к нескольким столбцам, передав список индексов столбцов в dataFrame.ix.

Например:

>>> df = pandas.DataFrame({'a':np.random.rand(5), 'b':np.random.rand(5), 'c':np.random.rand(5), 'd':np.random.rand(5)})

>>> df
          a         b         c         d
0  0.705718  0.414073  0.007040  0.889579
1  0.198005  0.520747  0.827818  0.366271
2  0.974552  0.667484  0.056246  0.524306
3  0.512126  0.775926  0.837896  0.955200
4  0.793203  0.686405  0.401596  0.544421

>>> df.ix[:,[1,3]]
          b         d
0  0.414073  0.889579
1  0.520747  0.366271
2  0.667484  0.524306
3  0.775926  0.955200
4  0.686405  0.544421
2
ответ дан Safwan 22 August 2018 в 08:42
поделиться

Метод .transpose () преобразует столбцы в строки и строки в столбец, поэтому вы даже можете записать

df.transpose().ix[3]
1
ответ дан Stefano Fedele 22 August 2018 в 08:42
поделиться
  • 1
    Транспонирование может испортиться с типами данных. – IanS 16 February 2017 в 10:17

Вы можете использовать метку, основанную на использовании .loc или индекса, основанного на методе .iloc для обработки столбцов, включая диапазоны столбцов:

In [50]: import pandas as pd

In [51]: import numpy as np

In [52]: df = pd.DataFrame(np.random.rand(4,4), columns = list('abcd'))

In [53]: df
Out[53]: 
          a         b         c         d
0  0.806811  0.187630  0.978159  0.317261
1  0.738792  0.862661  0.580592  0.010177
2  0.224633  0.342579  0.214512  0.375147
3  0.875262  0.151867  0.071244  0.893735

In [54]: df.loc[:, ["a", "b", "d"]] ### Selective columns based slicing
Out[54]: 
          a         b         d
0  0.806811  0.187630  0.317261
1  0.738792  0.862661  0.010177
2  0.224633  0.342579  0.375147
3  0.875262  0.151867  0.893735

In [55]: df.loc[:, "a":"c"] ### Selective label based column ranges slicing
Out[55]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244

In [56]: df.iloc[:, 0:3] ### Selective index based column ranges slicing
Out[56]: 
          a         b         c
0  0.806811  0.187630  0.978159
1  0.738792  0.862661  0.580592
2  0.224633  0.342579  0.214512
3  0.875262  0.151867  0.071244
4
ответ дан Surya 22 August 2018 в 08:42
поделиться

Вы также можете использовать df.icol(n) для доступа к столбцу целым числом.

Обновление: icol устарела, и такую ​​же функциональность можно достичь:

df.iloc[:, n]  # to access the column at the nth position
31
ответ дан user2285236 22 August 2018 в 08:42
поделиться
  • 1
    Обратите внимание, что для предстоящей версии 0.11.0 эти методы устарели и могут быть удалены в будущих версиях. См. pandas.pydata.org/pandas-docs/dev/… о том, как выбрать позицию с помощью iloc / iat. – Wouter Overmeire 12 April 2013 в 11:04
  • 2
    Вышеупомянутая ссылка устарела, поскольку документы индексирования с тех пор были реструктурированы: pandas.pydata.org/pandas-docs/stable/… . На сегодняшний день, когда самая последняя версия 0.21.0, iloc остается документированным подходом к доступу к столбцу по положению. – iff_or 15 June 2017 в 00:54
Другие вопросы по тегам:

Похожие вопросы: