我有两个数据框:
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 是具有相同行数和不同列数的数据帧。现在我想选择 df1 中的行 i,df2 中的行 j,并获取单行的单个数据帧,其中包含 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
我怎样才能得到它?
由于您想要单行,
concat
作为系列,然后重塑:
i = 3
j = 2
df_curr = pd.concat([df1.iloc[i, :], df2.iloc[j, :]]).to_frame().T