Pandas 如何合并数据帧中的两行

Pandas 如何合并数据帧中的两行,pandas,dataframe,merge,Pandas,Dataframe,Merge,我有一个有两行的数据框,我想把这两行合并成一行。 df如下所示: PC Rating CY Rating PY HT 0 DE101 NaN AA GV 0 DE101 AA+ NaN GV 我曾尝试创建两个独立的数据帧,并将它们与df.merge(df2)结合,但没有成功。结果应该如下

我有一个有两行的数据框,我想把这两行合并成一行。 df如下所示:

              PC           Rating CY   Rating PY    HT
0             DE101           NaN            AA     GV
0             DE101           AA+           NaN     GV
我曾尝试创建两个独立的数据帧,并将它们与df.merge(df2)结合,但没有成功。结果应该如下

              PC           Rating CY   Rating PY    HT
0             DE101           AA+            AA     GV
有什么想法吗?提前谢谢 df.update可能是一种解决方案吗

编辑:

这对上面的例子有效。但是,对于包含数值的列,这种方法不会产生所需的输出,例如

              PC           Rating CY   Rating PY    HT    MV1   MV2
0             DE101           NaN            AA     GV    0     20 
0             DE101           AA+           NaN     GV    10    0
输出应为:

              PC           Rating CY   Rating PY    HT   MV1    MV2
0             DE101           AA+            AA     GV   10     20
上面的公式不求最后两列中的值之和,而是取dataframe第一行中的值

              PC           Rating CY   Rating PY    HT   MV1    MV2
0             DE101           AA+            AA     GV   0     20
如何解决此问题?

您可以在将
DF
分为两部分后使用此方法,其中前半部分中的空值将替换为另一半中的有限值,同时保持其其他有限值不变:

df.head(1).combine_first(df.tail(1))
# Practically this is same as → df.head(1).fillna(df.tail(1))


如果存在混合数据类型的列,将它们划分为其组成的
dtype
列,然后通过将它们链接起来对其执行各种操作是可行的

obj_df = df.select_dtypes(include=[np.object])
num_df = df.select_dtypes(exclude=[np.object])

obj_df.head(1).combine_first(obj_df.tail(1)).join(num_df.head(1).add(num_df.tail(1)))

您可以将
max
与转置类似

In [2103]: df.max().to_frame().T
Out[2103]:
      PC Rating CY Rating PY  HT MV1 MV2
0  DE101       AA+        AA  GV  10  20

谢谢,这适用于上面的示例。但是,如果有其他带有数值的列,则无法正确组合行,请参阅编辑我的帖子。我已经更新了我的帖子。由于您没有提到数据框中存在数值,我假设您只想用最下面的一行更新最上面的一行,以防发现任何空值。非常感谢!另一种方法是用NaN替换最后两列中的0值,然后应用您建议的第一个forumla
In [2103]: df.max().to_frame().T
Out[2103]:
      PC Rating CY Rating PY  HT MV1 MV2
0  DE101       AA+        AA  GV  10  20