python - 有没有办法创建关系熊猫数据框?
问题描述
由于错误地填充了位掩码数据框,我正在努力将我的 pandas df 转换为我需要的格式。
我有许多数据框:
plot_d1_sw1
- 这是从 .csv 读取的
timestamp switchID deviceID count
0 2019-05-01 07:00:00 1 GTEC122277 1
1 2019-05-01 08:00:00 1 GTEC122277 1
3 2019-05-01 10:00:00 1 GTEC122277 3
d1_sw1
- 这是过去 12 小时,取决于数据是否出现在filt
timestamp num
0 2019-05-01 12:00:00 False
1 2019-05-01 11:00:00 False
2 2019-05-01 10:00:00 True
3 2019-05-01 09:00:00 False
4 2019-05-01 08:00:00 True
5 2019-05-01 07:00:00 True
6 2019-05-01 06:00:00 False
7 2019-05-01 05:00:00 False
8 2019-05-01 04:00:00 False
9 2019-05-01 03:00:00 False
10 2019-05-01 02:00:00 False
11 2019-05-01 01:00:00 False
我已经尝试使用以下方法掩盖这一点并将计数列拉入任何True
值:
mask_d1_sw1 = d1_sw1.num == False
d1_sw1.loc[mask_d1_sw1, column_name] = 0
i=0
for row in plot_d1_sw1.itertuples():
mask_d1_sw1 = d1_sw1.num == True
d1_sw1.loc[mask_d1_sw1, column_name] = plot_d1_sw1['count'].values[i]
print(d1_sw1)
i = i + 1
这给了我:
timestamp num
0 2019-05-01 12:00:00 0
1 2019-05-01 11:00:00 0
2 2019-05-01 10:00:00 3
3 2019-05-01 09:00:00 0
4 2019-05-01 08:00:00 3
5 2019-05-01 07:00:00 3
6 2019-05-01 06:00:00 0
7 2019-05-01 05:00:00 0
8 2019-05-01 04:00:00 0
9 2019-05-01 03:00:00 0
10 2019-05-01 02:00:00 0
11 2019-05-01 01:00:00 0
...我知道这是因为我正在遍历count
列,plot_d1_sw1
但我一生无法弄清楚如何在逻辑上填写它以获得结果:
timestamp num
0 2019-05-01 12:00:00 0
1 2019-05-01 11:00:00 0
2 2019-05-01 10:00:00 3
3 2019-05-01 09:00:00 0
4 2019-05-01 08:00:00 1
5 2019-05-01 07:00:00 1
6 2019-05-01 06:00:00 0
7 2019-05-01 05:00:00 0
8 2019-05-01 04:00:00 0
9 2019-05-01 03:00:00 0
10 2019-05-01 02:00:00 0
11 2019-05-01 01:00:00 0
我怎样才能达到这个结果?
解决方案
一种方法是merge
在时间戳上,然后将布尔值乘以count
:
df = d1_sw1.merge(plot_d1_sw1, how='left', on='timestamp')
df['num'] = df.num.mul(df['count'].fillna(0)).astype(int)
df[['timestamp', 'num']]
这使:
timestamp num
0 2019-05-01-12:00:00 0
1 2019-05-01-11:00:00 0
2 2019-05-01-10:00:00 3
3 2019-05-01-09:00:00 0
4 2019-05-01-08:00:00 1
5 2019-05-01-07:00:00 1
6 2019-05-01-06:00:00 0
7 2019-05-01-05:00:00 0
8 2019-05-01-04:00:00 0
9 2019-05-01-03:00:00 0
10 2019-05-01-02:00:00 0
11 2019-05-01-01:00:00 0
推荐阅读
- plot - 创建数据分区图
- c++ - 是否保证浮点变量的副本将按位等同于原始变量?
- python - 将虚拟字段添加到 django 查询
- scala - Scala 内部类泛型边界
- linux - 如何使用源模式添加库?
- python - 如何在熊猫日期时间系列的开头/结尾定位连续的 NAN
- laravel - 检查用户是否打开了推送通知
- python - Django Selected 单选按钮选择和下拉菜单
- gtk - 是否可以选择让介子安装缺少的依赖项?(对于我的 GNOME 日历构建。)
- mongodb - Mongo::Error::NoServerAvailable: No Primary server is available in cluster -- 使用logstash到docker中的mongodb数据时出错