此问题已在此处有答案:
Pandas Merging 101(8个回答)
4天前关闭。
假设我有两个 Dataframe ,分别称为dfA和dfB,定义如下:
AIDs = np.array(['y5','x5','x1','x3','y1','x4','y4','y3','y2','x2'])
AValues = np.random.randint(10, 100, size=10)
dfA = pd.DataFrame({'IDs': AIDs,
'Values': AValues})
BIDs = np.random.choice(AIDs, size=30)
BValues = np.random.randint(1000, 3000, size=30)
Differences = np.zeros(30)
dfB = pd.DataFrame({'IDs': BIDs,
'Values': BValues,
'Differences': Differences})
目标是从dfA中的dfB中找到相应的ID,然后从dfB中相应ID位置的值中减去dfA中的值。最后,所有值都应存储在dfB中的值列中。
例如,如果:
dfB =
|index|IDs|Values|Differences|
|---|---|---|---|
|0|y2|48|0\.0|
|1|y4|47|0\.0|
|2|y1|22|0\.0|
|3|x2|86|0\.0|
|4|x1|67|0\.0|
|5|x2|65|0\.0|
|6|y2|97|0\.0|
|7|x2|89|0\.0|
|8|y3|51|0\.0|
|9|y1|74|0\.0|
|10|x3|99|0\.0|
|11|x5|51|0\.0|
|12|y1|82|0\.0|
|13|y3|73|0\.0|
|14|y1|56|0\.0|
|15|x3|99|0\.0|
|16|y5|44|0\.0|
|17|x4|57|0\.0|
|18|x4|24|0\.0|
|19|y1|28|0\.0|
|20|x5|79|0\.0|
|21|y3|75|0\.0|
|22|y1|34|0\.0|
|23|x2|15|0\.0|
|24|y2|59|0\.0|
|25|y5|33|0\.0|
|26|y5|36|0\.0|
|27|y5|13|0\.0|
|28|x4|85|0\.0|
|29|y5|35|0\.0|
dfA =
|index|IDs|Values|
|---|---|---|
|0|y5|1622|
|1|x5|1294|
|2|x1|1722|
|3|x3|1108|
|4|y1|1499|
|5|x4|1123|
|6|y4|2866|
|7|y3|1075|
|8|y2|1767|
|9|x2|2748|
then dfB['Differences'] =
|index|Differences|
|---|---|
|0|1767-48|
|1|2866-47|
|2|1499-22|
|3|2748-86|
.....
etc.
1条答案
按热度按时间iecba09b1#
pandas中存在一个“merge”:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html
比如你可以
然后你需要计算出它们之间的差异。为此,yoz可以使用这样一个函数