Как я могу преобразовать индексатор панд в строку? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть csv dataframe вроде -

print(test.loc[1])
outlook         sunny
temperature      mild
humidity       normal
wind             weak
playtennis        yes
Name: 1, dtype: object

Я хочу преобразовать это во что-то вроде -

outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Это один из способов использования списка и str.join:

import pandas as pd

test = pd.DataFrame([['sunny', 'mild', 'normal', 'weak', 'yes']],
                    columns=['outlook', 'temperature', 'humidity', 'wind', 'playtennis'])

res = '.'.join([k+'.'+test[k].iloc[0] for k in test])

print(res)

'outlook.sunny.temperature.mild.humidity.normal.wind.weak.playtennis.yes'

Кроме того, вы можете zip имена столбцов и фрейм данных values:

res = '.'.join(i+'.'+j for i, j in zip(test, test.values[0]))
0 голосов
/ 07 мая 2018

Пусть ser = test.loc[1].

  1. Вы можете преобразовать эту серию в словарь с помощью .to_dict(),
  2. Затем преобразуйте словарь в список кортежей ключ / значение с помощью .items(),
  3. Затем объедините кортежи в один список с itertools.chain и, наконец,
  4. Объединить элементы списка с точками с помощью .join().

Код Python:

from itertools import chain

'.'.join(chain.from_iterable(ser.to_dict().items()))
#'outlook.sunny.temperature.mild.humidity.normal....yes'
...