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

Car*_*men 6 merge dataframe pandas

我有一个包含两行的数据框,我想将这两行合并为一行.df如下:

              PC           Rating CY   Rating PY    HT
0             DE101           NaN            AA     GV
0             DE101           AA+           NaN     GV
Run Code Online (Sandbox Code Playgroud)

我试图创建两个单独的数据帧并将它们与df.merge(df2)合并而没有成功.结果应如下

              PC           Rating CY   Rating PY    HT
0             DE101           AA+            AA     GV
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前谢谢可以df.update成为可能的解决方案吗?

编辑:

df.head(1).combine_first(df.tail(1))
Run Code Online (Sandbox Code Playgroud)

这适用于上面的例子.但是,对于包含数值的列,此方法不会产生所需的输出,例如

              PC           Rating CY   Rating PY    HT    MV1   MV2
0             DE101           NaN            AA     GV    0     20 
0             DE101           AA+           NaN     GV    10    0
Run Code Online (Sandbox Code Playgroud)

输出应该是:

              PC           Rating CY   Rating PY    HT   MV1    MV2
0             DE101           AA+            AA     GV   10     20
Run Code Online (Sandbox Code Playgroud)

上面的公式不会总结最后两列中的值,而是获取数据帧第一行中的值.

              PC           Rating CY   Rating PY    HT   MV1    MV2
0             DE101           AA+            AA     GV   0     20
Run Code Online (Sandbox Code Playgroud)

怎么可以修复这个问题?

Zer*_*ero 5

你可以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
Run Code Online (Sandbox Code Playgroud)


Nic*_*eli 4

DF.combine_first()分离后即可使用方法DF,其中前半部分中的空值将替换为另一半中的有限值,同时保持其他有限值不变:

\n\n
df.head(1).combine_first(df.tail(1))\n# Practically this is same as \xe2\x86\x92 df.head(1).fillna(df.tail(1))\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n
\n\n

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

\n\n
obj_df = df.select_dtypes(include=[np.object])\nnum_df = df.select_dtypes(exclude=[np.object])\n\nobj_df.head(1).combine_first(obj_df.tail(1)).join(num_df.head(1).add(num_df.tail(1)))\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n