Сдвиг проводной связи, вызванный использованием pd.concat (x, y) - PullRequest
1 голос
/ 01 июня 2019

У меня есть набор данных х и у.x - это один список, который применяется ко всем данным y.Используя pd.concat([pd.Series(x),pd.DataFrame(y)], axis=1), я надеюсь получить следующее:

x1   y1   ya
x2   y2   yb
x3   y3   yc
x4   y4   yd
x5   y5   ye
x6   y6   yf
  • x содержит x1, x2, x3, x4, x5, x6.
  • y содержит [y1, y2, y3, y4, y5, y6], [ya, yb, yc, yd, ye, yf].
  • x и y находятся в панде DataFrame.

Выполнение pd.concat([pd.Series(x),pd.DataFrame(y)], axis=1) или pd.concat([pd.DataFrame(x),pd.DataFrame(y)], axis=1) приводит к следующему

x1   Nan   Nan
x2   Nan   Nan
x3   y1   ya
x4   y2   yb
x5   y3   yc
x6   y4   yd
     y5   ye
     y6   yf

Таким образом, значения кода y смещаются в направлении axis=0 на две ячейки.У меня есть индекс в этом DataFrame.Я удалил индекс.Никакой разницы не наблюдалось.

Этот сдвиг наблюдается только после того, как я соединю x и y.

Как я могу сдвинуть значения y вверх на два?

Спасибо!

1 Ответ

1 голос
/ 01 июня 2019

Это происходит, когда индексы серии 2 не совпадают.Попробуйте после сброса индекса (reset_index(drop=True)), чтобы индексы ряда или данных были выровнены:

pd.concat([pd.Series(x).reset_index(drop=True),pd.DataFrame(y)
               .reset_index(drop=True)], axis=1)

Или:

pd.concat([pd.DataFrame(x).reset_index(drop=True),pd.DataFrame(y)
                              .reset_index(drop=True)],axis=1)

Добавление примера:

s1=pd.Series([1,2,3]) #normal indexed
s2=pd.Series([4,5,6],index=[2,3,4]) #index starts from 2

Нормальный конкат на axis=1

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

     0    1
0  1.0  NaN
1  2.0  NaN
2  3.0  4.0
3  NaN  5.0
4  NaN  6.0

Конкат с reset_index()

pd.concat([s1.reset_index(drop=True),s2.reset_index(drop=True)],axis=1)

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