Не кажется ли вам, что создание DataFrame из списка Series довольно странно? - PullRequest
0 голосов
/ 27 сентября 2018

Предположим, мы должны последовательно:

s1 = pd.Series('a', index=[1,2,3], name="Column One")
s2 = pd.Series('b', index=[1,2,3], name="Column Two")

Как мы могли видеть из документации ( здесь ), предлагаемый способ создания DataFrame из числа объектов Serires - использование общего словаря pythonКонструкция, например:

d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
     'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)

В такой ситуации у меня возникает резонный вопрос, для каких целей нам нужен атрибут name в Серии, если он даже не может быть использован в конструкции, например:

df = pd.DataFrame(s1, s2)

с фреймом данных результата:

     Column    Column
     one       two  
+---+---------+---------+  
| 1 |    a    |    b    |
| 2 |   ...   |   ...   |
|                       |

Ответы [ 3 ]

0 голосов
/ 28 сентября 2018

Вы можете использовать словарное понимание, используя имя серии в качестве ключа и серию в качестве значения, а затем сформировать кадр данных:

Ввод:

d = {s.name: s for s in [s1,s2]}
df = pd.DataFrame(d)

Вывод:

  Column One Column Two
1          a          b
2          a          b
3          a          b
0 голосов
/ 28 сентября 2018

Возможно, более чистый способ создания кадра данных из списка серий - это pd.concat вдоль axis=1, то есть столбцы.При этом используется свойство name для каждой серии в вашем входном списке:

s1 = pd.Series('a', index=[1,2,3], name="Column One")
s2 = pd.Series('b', index=[1,2,3], name="Column Two")

df = pd.concat([s1, s2], axis=1)

print(df)

  Column One Column Two
1          a          b
2          a          b
3          a          b
0 голосов
/ 28 сентября 2018

Транспонируйте ваш фрейм данных.

df=df.T

сделано

...