尽管这似乎是以前曾经问过的问题,但我没有找到有关如何执行此功能的最佳实践信息。
概述:我有两个数据框; 第一个是我称之为完整数据框。它是原始来源,可以这么说。然后我有一个数据框,其中包含原始数据集的某些部分,但具有一些新的或更新的信息。
目标:我希望能够将新数据集的结果应用于原始数据框; 将其值叠加到原始数据集的行/列上。
问题:目前我的问题是我还没有发现使用合并的正确格式来获得我想要的结果。 我要么只得到两个数据框相同的行,要么只返回原始数据集,没有添加新信息。
这是我想要的结果: 在geoid数据帧中的索引值为0的位置存在
概述:我有两个数据框; 第一个是我称之为完整数据框。它是原始来源,可以这么说。然后我有一个数据框,其中包含原始数据集的某些部分,但具有一些新的或更新的信息。
目标:我希望能够将新数据集的结果应用于原始数据框; 将其值叠加到原始数据集的行/列上。
问题:目前我的问题是我还没有发现使用合并的正确格式来获得我想要的结果。 我要么只得到两个数据框相同的行,要么只返回原始数据集,没有添加新信息。
geoid = pandas.DataFrame({'Address': ['4050 Blake Ct', '1234 w east st'],
'ID': ['789456', '654321'],
'State': ['NV', 'NV'],
'Zip': ['88991', '88991'],
'Ph': ['789456', '456132']})
print(geoid)
Address ID State Zip Ph
0 4050 Blake Ct 789456 NV 88991 789456
1 1234 w east st 654321 NV 88991 456132
original = pandas.DataFrame({'Address': ['', '1234 w east st', 'PO box 789'],
'ID': ['789456', '654321', '654789'],
'State': ['NV', 'CA', 'CA'],
'Zip': ['88991', '88991', '99663'],
'Ph': ['789456', '456132', '741852']})
print(original)
Address ID State Zip Ph
0 789456 NV 88991 789456
1 1234 w east st 654321 NV 88991 456132
2 PO box 789 654789 CA 99663 741852
# This produces the same as the original dataframe, with no changes
df = original.merge(geoid, how='left', on=list(original.columns))
# This keeps only the rows from the geoid dataframe
df = original.merge(geoid, how='right', on=list(original.columns))
# This duplicates the data so that it includes data from both dataframes
df = original.merge(geoid, how='outer', on=list(original.columns))
# This produces an empty dataframe
df = original.merge(geoid, how='inner', on=list(original.columns))
这是我想要的结果: 在geoid数据帧中的索引值为0的位置存在
4050 Blake Ct
的值,而在原始数据帧中该位置为空。我希望将该值复制到原始数据帧中,覆盖原有值。
**注意:原始数据帧中的空单元格只是可能存在的示例,但不仅限于空单元格。理想情况下,我希望能够“叠加”我的geoid数据帧在原始数据帧上。每个数据帧的索引将始终与条目对应。把geoid数据帧想象成原始数据帧的排序或修剪版本。 Address ID State Zip Ph
0 4050 Blake Ct 789456 NV 88991 789456
1 1234 w east st 654321 NV 88991 456132
2 PO box 789 654789 CA 99663 741852
有许多方法可以在pandas函数之外完成此操作,但我觉得可能有一种内置于pandas中的方法可以完成此操作,但也许我是错误的。
update
,甚至不知道它是可用的。谢谢你提供这个信息。 - spareTimeCoder