【问题标题】:Can we sort multiple data frames comparing values of each element in column我们可以对多个数据框进行排序,比较列中每个元素的值吗
【发布时间】:2020-09-09 20:29:59
【问题描述】:

我有两个包含一些数据的 csv 文件,我想根据一个公共列组合和排序数据: 这是data1.csv和data2.csv文件:

data3.csv 是输出文件,我需要在其中组合和排序数据,如下所示:

我怎样才能做到这一点?

【问题讨论】:

    标签: pandas python-2.7 dataframe timestamp


    【解决方案1】:

    这就是我认为你想在这里做的事情:

    我创建了两个简单类型的数据框,假设第一列就像你的时间戳:

    df1 = pd.DataFrame([[1,1],[2,2], [7,10], [8,15]], columns=['timestamp', 'A'])
    df2 = pd.DataFrame([[1,5],[4,7],[6,9], [7,11]], columns=['timestamp', 'B'])
    c = df1.merge(df2, how='outer', on='timestamp')
    print(c)

    即使与其他 DataFrame 不匹配,外部合并也会导致每个贡献的 DataFrame 完全出现在输出中。

    结果是您最终得到一个带有时间戳列的 DataFrame 以及来自每个源 DataFrame 的依赖数据。

    注意事项:

    • 您的第二个样本中有重复的时间戳,我认为这可能是由于您没有显示足够的分辨率。您不希望此合并解决方案出现真正的重复记录,因为我们假设时间戳是唯一的。
    • 我没有第二次在这里重复时间戳列,但是如果您确实需要两个时间戳列,则可以根据列 A 或 B 是否为 notnull() 轻松添加另一个时间戳列。 Pandas merge() 有一个指示器选项,如果您不想依赖 A 列和 B 列,它会显示时间戳的来源。
    • 在帖子中,您有两个名为“timestamp”的输出列。通常,您不会输出具有相同名称的两列,因为它们仅通过位置(或颜色)来区分,而这些不是您应该依赖的属性。

    【讨论】:

    • 感谢您帮助我。我尝试执行您的代码,但它正在组合数据但不是以排序方式: [timestamp AB] 1 1 5 2 2 NaN 7 10 11 8 15 NaN 4 NaN 7 6 NaN 9 另外,如果我尝试将此应用于我的实际数据它在我的python版本中给出错误。我正在使用python2.7 RuntimeWarning:在absolute中遇到无效值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多