因此,我尝试查看许多文章,解释合并或连接、连接等如何在 python 中为 pandas 或只是一般的 r 工作。当我用我的数据测试它时,似乎没有什么能按我需要的方式工作。我将发布带有任意数字和 header 的示例数据,这些数据具有我的数据的特征以及我希望它在最终产品中的外观。我通常尝试使用 Genus 作为我的常用列,因为该列具有最常用的信息,而所有其他列都是描述该列的信息。这些是文本文件。
数据框 1:
Genus Data Facts Info
Dog 1 2 N/A
Cat 3 1 N/A
Elephant N/A 3 3
Pig N/A N/A N/A
Mouse N/A N/A N/A
数据框 2:
Genus Info Stats
Dog 2 3
Cat 1 2
Elephant N/A 1
Pig N/A N/A
Mouse N/A N/A
Bird N/A N/A
期望的结果:
Genus Data Facts Info Stats
Dog 1 2 2 3
Cat 3 1 1 2
Elephant N/A 3 3 1
Pig N/A N/A N/A N/A
Mouse N/A N/A N/A N/A
Bird N/A N/A N/A N/A
有没有办法使用 python 或 r 来创建此结果?我是 python 和 r 的新手,不知道/all/的来龙去脉,所以我可能只是遗漏了一些东西或者没有使用正确的术语进行搜索,但我已经尝试了大约 3 周,现在正在阅读其他人对类似情况做了什么,并试图摆脱这些情况。我不能使用 Excel,因为它会自动将一些数字输入更改为日期并进行其他小的更改,如果有人试图重做,他们可能没有意识到修复这些细微差别。
请您参考如下方法:
以下是如何在 python 中使用 pandas 执行此操作:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(3,4), columns=['a','b','c','d']
df2 = pd.DataFrame(np.random.randn(3,2), columns=['e','f'])
pd.concat([df1, df2], axis=1)
# a b c d e f
# 0 -1.181554 0.918146 0.547498 -0.409452 -1.852066 -0.377525
# 1 0.508757 0.219863 1.945935 1.285512 -0.076156 0.172197
# 2 -0.186153 -1.784728 -0.200416 1.873692 2.097818 0.575256
(McKinney,用于数据分析的 Python,第 186 页)
编辑:
糟糕,我注意到您在两个数据框中都有一个信息列。我认为在那种情况下这会更好:
df1.combine_first(df2)
you can think of it as "patching" missing data in the calling object with data from the object you pass (McKinney)
编辑:
McKinney 的另一引述,p177 提供
pandas.mergeconnects rows of DataFrames based on one or more keys [like a database join]
pandas.concatglues or stacks together objects along an axis
combine_firstenables splicing together overlapping data to fill in missing values in one object with values from another
