Как соединить две отдельные строки в пандах? - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь выделить несколько отдельных строк в одной группе данных и пытаюсь создать новый кадр данных, объединяя их вместе.

Вот простой пример

x=pd.DataFrame([[1,2,3],[1,2,3]],columns=["A","B","C"])

   A  B  C
0  1  2  3
1  1  2  3


a=x.loc[0,:]

A    1
B    2
C    3
Name: 0, dtype: int64

b=x.loc[1,:]
A    1
B    2
C    3
Name: 1, dtype: int64

c=pd.concat([a,b])

I end up with this:

A    1
B    2
C    3
A    1
B    2
C    3
Name: 0, dtype: int64

Whearas Я бы ожидал, что исходный кадр данных:

   A  B  C
0  1  2  3
1  1  2  3

Я могу получить значения и создать новый фрейм данных, но это не похоже на способ сделать это.

Ответы [ 3 ]

0 голосов
/ 30 августа 2018

Если вы хотите объединить две серии по вертикали (вертикальная укладка), тогда один вариант - это concat и транспонирование.

Другой использует np.vstack:

pd.DataFrame(np.vstack([a, b]), columns=a.index)

   A  B  C
0  1  2  3
1  1  2  3
0 голосов
/ 30 августа 2018

Похоже, вы хотите создать новый фрейм данных из коллекции записей. Для этого есть метод:

import pandas as pd
x = pd.DataFrame([[1,2,3],[1,2,3]], columns=["A","B","C"])
a = x.loc[0,:]
b = x.loc[1,:]
c = pd.DataFrame.from_records([a, b])
print(c)
#    A  B  C
# 0  1  2  3
# 1  1  2  3
0 голосов
/ 30 августа 2018

Так как вы нарезаете на index, я бы использовал .iloc, а затем заметил бы разницу между [[]] и [], которые возвращают DataFrame и Series*

a = x.iloc[[0]]
b = x.iloc[[1]]

pd.concat([a, b])
#   A  B  C
#0  1  2  3
#1  1  2  3

Чтобы все еще использовать .loc, вы бы сделали что-то вроде

a = x.loc[[0,]]
b = x.loc[[1,]]

* Есть небольшое предостережение, что если индекс 0 будет дублирован в x, то x.loc[0,:] вернет DataFrame, а не Series.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...