Pandas 如何合并数据帧中的两行
我有一个有两行的数据框,我想把这两行合并成一行。 df如下所示: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)结合,但没有成功。结果应该如下
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