小编Max*_*ime的帖子

使用 pd.melt() 取消透视 MultiIndex DataFrame

我想取消透视具有 MultiIndex 列的 DataFrame,但我很难获得我想要的确切输出。我尝试了该函数的所有参数pd.melt(),但无法成功......

这是我的输入:

import pandas as pd
indexes = [['TC1', 'TC2'], ['x', 'z', 'Temp']]
data = pd.DataFrame(columns=pd.MultiIndex.from_product(indexes))

data.loc[0,('TC1', 'x')] = 10
data.loc[0,('TC1', 'z')] = 100
data.loc[0,('TC1', 'Temp')] = 250
data.loc[0,('TC2', 'x')] = 20
data.loc[0,('TC2', 'z')] = 200
data.loc[0,('TC2', 'Temp')] = 255
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出类型,“时间”列是数据索引

  Time   TC   x    z Temp
0    0  TC1  10  100  250
1    0  TC2  20  200  255
Run Code Online (Sandbox Code Playgroud)

我的真实数据有更多的此类列TCx。有什么线索吗?

python pandas

5
推荐指数
1
解决办法
2118
查看次数

SQLite 中的移动平均线

我想计算 SQLite 表中数据的移动平均值。我在 MySQL 中找到了几种方法,但在 SQLite 中找不到有效的方法。

在 SQL 中,我认为应该这样做(但是,我无法尝试...):

SELECT date, value, 
avg(value) OVER (ORDER BY date ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING) as MovingAverageWindow7
FROM t ORDER BY date;
Run Code Online (Sandbox Code Playgroud)

但是,我看到了两个缺点:

  • 这似乎不适用于 sqlite
  • 如果数据在前面/后面几行的几个日期不连续,它会在比我实际想要的更宽的窗口上计算移动平均值,因为它仅基于周围的行数。因此,应添加日期条件

实际上,我希望它计算每个日期的“价值”平均值,超过 +/-3 天(每周移动平均线)或 +/-15 天(每月移动平均线)

这是一个示例数据集:

CREATE TABLE t ( date DATE, value INTEGER );

INSERT INTO t (date, value) VALUES ('2018-02-01', 8);
INSERT INTO t (date, value) VALUES ('2018-02-02', 2);
INSERT INTO t (date, value) VALUES ('2018-02-05', 5);
INSERT INTO t (date, value) …
Run Code Online (Sandbox Code Playgroud)

sqlite moving-average

3
推荐指数
2
解决办法
2632
查看次数

慢 pd.to_datetime()

我正在阅读两种非常相似的 csv 文件。它们的长度大致相同,20 000 行。每条线代表每秒记录的参数。因此,第一列是时间戳。

  • 在第一个文件中,模式如下:2018-09-24 15:38
  • 在第二个文件中,模式如下:2018-09-24 03:38:06 PM

在这两种情况下,命令是相同的:

data = pd.read_csv(file)
data['Timestamp'] = pd.to_datetime(data['Timestamp'])
Run Code Online (Sandbox Code Playgroud)

我检查两行的执行时间:

  • pd.read 在这两种情况下同样有效
  • 执行第二行代码需要大约 3 到 4 秒的时间

唯一的区别是日期模式。我不会怀疑。你知道为什么吗?你知道如何解决这个问题吗?

python string-to-datetime pandas

3
推荐指数
1
解决办法
1554
查看次数

找到特定字典键具有特定值的所有行

我想找到特定字典键具有特定值的所有行.不太清楚这样说,所以这里有一个例子:

data = [
    {'key1' : 'value1', 'key2' : 'value2'},
    {'key1' : 'value3', 'key2' : 'value4'},
    {'key1' : 'value1', 'key2' : 'value5'}
]

out = data['key1' == 'value1']['key2']
Run Code Online (Sandbox Code Playgroud)

我想out等于['value2', 'value5'],但事实上它只返回第一个结果,即'value2'

python dictionary list

2
推荐指数
1
解决办法
62
查看次数