Как объединить два кадра данных по одной строке каждый без генерации NaNPython

Программы на Python
Anonymous
Как объединить два кадра данных по одной строке каждый без генерации NaN

Сообщение Anonymous »

У меня есть два фрейма данных:

Код: Выделить всё

import pandas as pd
import numpy as np

n=10

df = pd.DataFrame(
{
"A": 1.0,
"B": pd.Timestamp("20130102"),
"C": pd.Series(1, index=list(range(n)), dtype="float32"),
"D": np.array([3] * n, dtype="int32"),
"E": pd.Categorical(["test", "train"] * int(n/2)),
"F": "foo",
}
)

i_f = ['A', 'B']
o_f = ['C', 'D', 'E', 'F']
df1 = pd.DataFrame(data=df[i_f].values, columns=i_f).reset_index(drop=True)
df2 = pd.DataFrame(data=df[o_f].values, columns=o_f).reset_index(drop=True)
df1 и df2 — это фреймы данных с одинаковым количеством строк и разными столбцами. Теперь я хочу выбрать строку i в df1, строку j в df2 и получить один кадр данных одной строки, в которой есть столбцы из df1 и df2. Я да:

Код: Выделить всё

i = 3
j = 2
df_curr = pd.concat([df1.iloc[[i], :], df2.iloc[[j], :]], axis=1)
Однако вместо этого я получаю фрейм данных с двумя строками и NaN:

Код: Выделить всё

print(df_curr)
#      A          B    C    D     E    F
# 3  1.0 2013-01-02  NaN  NaN   NaN  NaN
# 2  NaN        NaT  1.0    3  test  foo
Вместо этого мне нужен

Код: Выделить всё

       A          B    C    D     E    F
#    1.0 2013-01-02  1.0    3  test  foo
Как я могу это получить?

Подробнее здесь: https://stackoverflow.com/questions/786 ... rating-nan

Вернуться в «Python»