Может ли столбец из фрейма данных Python Pandas быть списком или набором или ...? - PullRequest
0 голосов
/ 02 марта 2019

Все в заголовке: Может ли столбец из фрейма данных Python Pandas быть списком, ансамблем, кортежем или ...?

 import pandas as pd

    lnks = [ ( 'a' , 'b') , ( 'b' , 'c') , ( 'c' , 'a' ) , ('b' , 'd' ) , ( 'd' , 'a' ) ]

    lbls = [ 'x' , 'y']

    df = pd.DataFrame.from_records( lnks , columns = lbls )

Попытка построить новый столбец z типа ensemble из столбцовзначения строк x и y:

df[ 'z' ] =  { df[ 'x' ] , df[ 'y' ] }

Я получаю следующий код ошибки:

TypeError: объекты 'Series' являются изменяемыми, поэтому они не могут быть хешами

Я быхотел бы получить фрейм данных, содержащий:

x y z

'a' 'b' { 'a  , 'b' }
'b' 'c' { 'b' , 'c' }
'c' 'a' { 'c' , 'a' }
...

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Это:

lnks = [('a', 'b'), ('b', 'c'), ('c', 'a'), ('b', 'd'), ('d', 'a')]
lbls = ['x', 'y']

df = pd.DataFrame.from_records(lnks, columns=lbls)

df['z'] = df.apply(lambda r: ( r.x, r.y ), axis=1) #if you want a tuple

или

df['z'] = df.apply(lambda r: [r.x, r.y ], axis=1)  #if you want a list
print(df)
0 голосов
/ 02 марта 2019

Для кортежей используйте apply с axis=1 для обработки по строкам:

df[ 'z' ] =  df.apply(lambda x: (x[ 'x' ] , x[ 'y' ]), axis=1)
print (df)
   x  y       z
0  a  b  (a, b)
1  b  c  (b, c)
2  c  a  (c, a)
3  b  d  (b, d)
4  d  a  (d, a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...