1
假设我有两个dataframes:减去大熊猫dataframes而留下了一些列的完整
data1 = """
idx, stat, val
1, 1, 5
2, 1, 10
3, 2, 15
4, 3, 20
"""
data2 = """
idx, stat, val
2, 1, 8
4, 5, 16
"""
(对不起 - 我不知道如何在大熊猫容易编写这一点 - 我会在现实生活中的CSV阅读)。
我想减去这两个数据框,以便只减去val列(实际上这些是站坐标)。如果两个数据帧中只有一个具有相应的索引值(ascii格式的列idx),那么结果应该是NaN。也可以,如果不匹配的行立即删除(我会后来无论如何调用dropna)。
因此,我期望的结果将是:
desired = """
idx, stat, val
1, 1, NaN
2, 1, 2
3, 2, NaN
4, 3, 4
"""
原则data1.sub(data2)
很好地工作 - 除了我不能明白的方式如何“保护”,从减法统计列。我也试过data1.sub(data2['val'], axis=0)
,但是这搞砸了在data1.sub(data2)
中自动执行的行匹配。一种解决方法是在之后用来自data1
的原始值重新替换统计列,但这看起来相当笨拙。