Pandas 加入行作为新列
Pandas join rows as new columns
我有以下 df:
import pandas as pd
df = pd.DataFrame({'C':[5,4],'P':[2.3,5.6]})
我想按如下方式将第 1 行连接到第 0 行:
我知道重复的列会被分配一个“_1”。
您的实际用例可能更复杂,但对于您的简单示例,您可以执行以下操作。
选项 1 - 使用 unstack()
df.unstack().reset_index().drop('level_1', axis=1).set_index('level_0').T
level_0 C C P P
0 5.0 4.0 2.3 5.6
选项 2 - 使用 concat()
pd.concat([df.iloc[0], df.iloc[1]], axis=0).to_frame().T
C P C P
0 5.0 2.3 4.0 5.6
选项 3 - 使用 merge()
(df.iloc[0].to_frame().T.reset_index(drop=True)).merge((df.iloc[1].to_frame().T.reset_index(drop=True)), left_index=True, right_index=True)
C_x P_x C_y P_y
0 5.0 2.3 4.0 5.6
选项 4 - 使用 numpy.reshape()
pd.DataFrame(np.reshape(df.to_numpy(),(1,-1)))
0 1 2 3
0 5.0 2.3 4.0 5.6
我有以下 df:
import pandas as pd
df = pd.DataFrame({'C':[5,4],'P':[2.3,5.6]})
我想按如下方式将第 1 行连接到第 0 行:
我知道重复的列会被分配一个“_1”。
您的实际用例可能更复杂,但对于您的简单示例,您可以执行以下操作。
选项 1 - 使用 unstack()
df.unstack().reset_index().drop('level_1', axis=1).set_index('level_0').T
level_0 C C P P
0 5.0 4.0 2.3 5.6
选项 2 - 使用 concat()
pd.concat([df.iloc[0], df.iloc[1]], axis=0).to_frame().T
C P C P
0 5.0 2.3 4.0 5.6
选项 3 - 使用 merge()
(df.iloc[0].to_frame().T.reset_index(drop=True)).merge((df.iloc[1].to_frame().T.reset_index(drop=True)), left_index=True, right_index=True)
C_x P_x C_y P_y
0 5.0 2.3 4.0 5.6
选项 4 - 使用 numpy.reshape()
pd.DataFrame(np.reshape(df.to_numpy(),(1,-1)))
0 1 2 3
0 5.0 2.3 4.0 5.6