【问题标题】:Merging two data frames but with different hz (Pandas)合并两个数据帧但具有不同的 hz (Pandas)
【发布时间】:2021-12-18 12:37:58
【问题描述】:

我做了一个代码,目的是合并两个数据框()。但是,其中一个数据帧包含由于某种原因每隔一秒记录 10 赫兹数据和每隔 11 赫兹的数据。为了避免合并问题,我对此问题的解决方案是创建一个如下所示的for loop

for myrow in range (len(wholedf)):
        print(myrow)
        sepe = wholedf.at[myrow,'TIME_DIFFERENCE']
        if sepe != 0.0:
            resetcounter = 1
            row0 = myrow
        if resetcounter > 11:
            wholedf = wholedf.drop(wholedf.index[row0])
        myrow+=1
        resetcounter+=1

(我相信你们中的许多人都了解它的功能。但是对于那些不了解的人,变量“sepe”返回时差单元格的值(0.0 或大于 0.0)。每次它记录没有差异的行 (0.0) 在 11 的跨度内出现在彼此之后,它删除了这些 row0

的第一行

使用此代码的问题在于它非常慢而且它返回一个意外错误

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

对于if sepe > 0.0:这一行

我的两个数据框是这样的:

1.

TIME                    SPEED   OTHER    OTHER2
...
2020-12-03 22:06:16     50      100      52
2020-12-03 22:06:17     60      130      22
2020-12-03 22:06:17     100     105      13
2020-12-03 22:06:17     24      99       104
2020-12-03 22:06:17     44      24       22
2020-12-03 22:06:17     66      20       257
2020-12-03 22:06:17     110     95       102
2020-12-03 22:06:17     90      22       24
2020-12-03 22:06:17     10      64       51
2020-12-03 22:06:17     11      66       61
2020-12-03 22:06:17     100     100      103
2020-12-03 22:06:17     120     175      111
2020-12-03 22:06:18     60      130      22
2020-12-03 22:06:18     100     105      13
2020-12-03 22:06:18     24      99       104
2020-12-03 22:06:18     44      24       22
2020-12-03 22:06:18     66      20       257
2020-12-03 22:06:18     110     95       102
2020-12-03 22:06:18     90      22       24
2020-12-03 22:06:18     10      64       51
2020-12-03 22:06:18     11      66       61
2020-12-03 22:06:18     100     100      103
...

(如您所见,第 17 秒的行的长度是 11 而不是 10)

2.

TIME                    FUEL    OTHER    OTHER2
...
2020-12-03 22:06:16.944 124     49       157
2020-12-03 22:06:17.044 113     42       132
2020-12-03 22:06:17.144 144     11       111
2020-12-03 22:06:17.244 224     29       557
2020-12-03 22:06:17.344 1224    422      151
2020-12-03 22:06:17.444 324     56       257
2020-12-03 22:06:17.544 18      29       157
2020-12-03 22:06:17.644 144     99       182
2020-12-03 22:06:17.744 672     14       977
2020-12-03 22:06:17.844 655     13       87
2020-12-03 22:06:17.944 194     15       14
...

(数据以10hz记录)

对于这个问题还有其他更聪明的解决方案吗?或者如果这是唯一的解决方案,我该如何修复错误?

提前谢谢你!

【问题讨论】:

  • 我想一个简单的解决方案是删除每个索引为 21*x 的 cel,但这不支持不规则性。

标签: python pandas dataframe for-loop


【解决方案1】:

IIUC,试试这个:

df = df[df.groupby("TIME").cumcount() < 10]

output:
                TIME  SPEED  OTHER  OTHER2
                                       
2020-12-03  22:06:16     50    100      52
2020-12-03  22:06:17     60    130      22
2020-12-03  22:06:17    100    105      13
2020-12-03  22:06:17     24     99     104
2020-12-03  22:06:17     44     24      22
2020-12-03  22:06:17     66     20     257
2020-12-03  22:06:17    110     95     102
2020-12-03  22:06:17     90     22      24
2020-12-03  22:06:17     10     64      51
2020-12-03  22:06:17     11     66      61
2020-12-03  22:06:17    100    100     103
2020-12-03  22:06:18     60    130      22
2020-12-03  22:06:18    100    105      13
2020-12-03  22:06:18     24     99     104
2020-12-03  22:06:18     44     24      22
2020-12-03  22:06:18     66     20     257
2020-12-03  22:06:18    110     95     102
2020-12-03  22:06:18     90     22      24
2020-12-03  22:06:18     10     64      51
2020-12-03  22:06:18     11     66      61
2020-12-03  22:06:18    100    100     103

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 2012-07-23
    • 2021-09-05
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多