python - 当它替换数据框中的值时,[] 是什么意思?
问题描述
在创建数据透视表之后,我出现了许多 [] 值。我不确定为什么会发生这种情况,但我想弄清楚为什么/是否可以安全删除?
数据框列类型为:
zone float64
logtime_round datetime64[ns]
varname object
value float64
index1 int64
我正在使用以下代码创建数据透视表:
pivot = df.pivot_table(index='logtime_round', columns=['varname','zone'], values='value', aggfunc=lambda x: x)
这是我的数据透视表的一个混乱示例,其中出现了“[]”。
arname HeatingSetpoint SetpointMode
zone 0.0 1.0 2.0 3.0 4.0 5.0 6.0 0.0 1.0 2.0 3.0 4.0 5.0 6.0
logtime_round
2017-05-01 06:00:00 17 14.5 14.5 14.5 14.5 15 NaN 100 100 100 100 100 100 NaN
2017-05-01 06:05:00 17 17 14.5 17 17 15 NaN 100 100 100 100 100 100 NaN
2017-05-01 06:20:00 [] [] [] [] [] [] NaN [] [] [] [] [] [] NaN
2017-05-01 06:30:00 14.5 14.5 14.5 14.5 14.5 15 NaN 100 100 100 100 100 100 NaN
2017-05-01 08:05:00 [] [] [] [] [] [] NaN [] [] [] [] [] [] NaN
当我尝试删除基于该值的行时,所有行都被删除(dfremove.drop(df[df.HeatingSetpoint == '[]'].index, inplace=True)
)。谢谢你的帮助!
编辑:工作示例(对不起间距!)
df_dict = {'zone': {125: 5.0,
126: 5.0,
127: 4.0,
128: 4.0,
129: 3.0,
130: 2.0,
131: 2.0,
132: 1.0,
133: 1.0,
134: 0.0,
135: 0.0,
136: 3.0,
143: 5.0,
144: 5.0,
145: 1.0,
146: 0.0,
147: 0.0,
148: 1.0,
149: 2.0,
150: 4.0,
151: 4.0,
152: 3.0,
153: 2.0,
154: 3.0,
156: 0.0,
157: 1.0,
158: 1.0,
159: 2.0,
160: 3.0,
161: 0.0,
162: 4.0,
163: 5.0,
164: 5.0,
165: 3.0,
166: 5.0,
167: 4.0,
168: 4.0,
172: 5.0,
175: 0.0,
176: 2.0,
177: 1.0,
178: 1.0,
179: 2.0,
180: 4.0,
181: 3.0,
182: 3.0,
183: 2.0,
184: 0.0,
186: 5.0,
187: 4.0},
'logtime_round': {125: Timestamp('2017-05-01 06:00:00'),
126: Timestamp('2017-05-01 06:00:00'),
127: Timestamp('2017-05-01 06:00:00'),
128: Timestamp('2017-05-01 06:00:00'),
129: Timestamp('2017-05-01 06:00:00'),
130: Timestamp('2017-05-01 06:00:00'),
131: Timestamp('2017-05-01 06:00:00'),
132: Timestamp('2017-05-01 06:00:00'),
133: Timestamp('2017-05-01 06:00:00'),
134: Timestamp('2017-05-01 06:00:00'),
135: Timestamp('2017-05-01 06:00:00'),
136: Timestamp('2017-05-01 06:00:00'),
143: Timestamp('2017-05-01 06:05:00'),
144: Timestamp('2017-05-01 06:05:00'),
145: Timestamp('2017-05-01 06:05:00'),
146: Timestamp('2017-05-01 06:05:00'),
147: Timestamp('2017-05-01 06:05:00'),
148: Timestamp('2017-05-01 06:05:00'),
149: Timestamp('2017-05-01 06:05:00'),
150: Timestamp('2017-05-01 06:05:00'),
151: Timestamp('2017-05-01 06:05:00'),
152: Timestamp('2017-05-01 06:05:00'),
153: Timestamp('2017-05-01 06:05:00'),
154: Timestamp('2017-05-01 06:05:00'),
156: Timestamp('2017-05-01 06:20:00'),
157: Timestamp('2017-05-01 06:20:00'),
158: Timestamp('2017-05-01 06:20:00'),
159: Timestamp('2017-05-01 06:20:00'),
160: Timestamp('2017-05-01 06:20:00'),
161: Timestamp('2017-05-01 06:20:00'),
162: Timestamp('2017-05-01 06:20:00'),
163: Timestamp('2017-05-01 06:20:00'),
164: Timestamp('2017-05-01 06:20:00'),
165: Timestamp('2017-05-01 06:20:00'),
166: Timestamp('2017-05-01 06:20:00'),
167: Timestamp('2017-05-01 06:20:00'),
168: Timestamp('2017-05-01 06:20:00'),
172: Timestamp('2017-05-01 06:20:00'),
175: Timestamp('2017-05-01 06:20:00'),
176: Timestamp('2017-05-01 06:20:00'),
177: Timestamp('2017-05-01 06:20:00'),
178: Timestamp('2017-05-01 06:20:00'),
179: Timestamp('2017-05-01 06:20:00'),
180: Timestamp('2017-05-01 06:20:00'),
181: Timestamp('2017-05-01 06:20:00'),
182: Timestamp('2017-05-01 06:20:00'),
183: Timestamp('2017-05-01 06:20:00'),
184: Timestamp('2017-05-01 06:20:00'),
186: Timestamp('2017-05-01 06:30:00'),
187: Timestamp('2017-05-01 06:30:00')},
'varname': {125: 'SetpointMode',
126: 'HeatingSetpoint',
127: 'SetpointMode',
128: 'HeatingSetpoint',
129: 'HeatingSetpoint',
130: 'SetpointMode',
131: 'HeatingSetpoint',
132: 'SetpointMode',
133: 'HeatingSetpoint',
134: 'SetpointMode',
135: 'HeatingSetpoint',
136: 'SetpointMode',
143: 'SetpointMode',
144: 'HeatingSetpoint',
145: 'HeatingSetpoint',
146: 'SetpointMode',
147: 'HeatingSetpoint',
148: 'SetpointMode',
149: 'HeatingSetpoint',
150: 'SetpointMode',
151: 'HeatingSetpoint',
152: 'SetpointMode',
153: 'SetpointMode',
154: 'HeatingSetpoint',
156: 'SetpointMode',
157: 'HeatingSetpoint',
158: 'SetpointMode',
159: 'HeatingSetpoint',
160: 'SetpointMode',
161: 'HeatingSetpoint',
162: 'SetpointMode',
163: 'HeatingSetpoint',
164: 'SetpointMode',
165: 'HeatingSetpoint',
166: 'SetpointMode',
167: 'HeatingSetpoint',
168: 'SetpointMode',
172: 'HeatingSetpoint',
175: 'HeatingSetpoint',
176: 'SetpointMode',
177: 'HeatingSetpoint',
178: 'SetpointMode',
179: 'HeatingSetpoint',
180: 'HeatingSetpoint',
181: 'SetpointMode',
182: 'HeatingSetpoint',
183: 'SetpointMode',
184: 'SetpointMode',
186: 'SetpointMode',
187: 'SetpointMode'},
'value': {125: 100.0,
126: 15.0,
127: 100.0,
128: 14.5,
129: 14.5,
130: 100.0,
131: 14.5,
132: 100.0,
133: 14.5,
134: 100.0,
135: 17.0,
136: 100.0,
143: 100.0,
144: 15.0,
145: 17.0,
146: 100.0,
147: 17.0,
148: 100.0,
149: 14.5,
150: 100.0,
151: 17.0,
152: 100.0,
153: 100.0,
154: 17.0,
156: 100.0,
157: 17.0,
158: 100.0,
159: 14.5,
160: 100.0,
161: 17.0,
162: 100.0,
163: 15.0,
164: 100.0,
165: 17.0,
166: 100.0,
167: 17.0,
168: 100.0,
172: 15.0,
175: 14.5,
176: 100.0,
177: 17.0,
178: 100.0,
179: 14.5,
180: 17.0,
181: 100.0,
182: 17.0,
183: 100.0,
184: 100.0,
186: 100.0,
187: 100.0},
'index1': {125: 125,
126: 126,
127: 127,
128: 128,
129: 129,
130: 130,
131: 131,
132: 132,
133: 133,
134: 134,
135: 135,
136: 136,
143: 143,
144: 144,
145: 145,
146: 146,
147: 147,
148: 148,
149: 149,
150: 150,
151: 151,
152: 152,
153: 153,
154: 154,
156: 156,
157: 157,
158: 158,
159: 159,
160: 160,
161: 161,
162: 162,
163: 163,
164: 164,
165: 165,
166: 166,
167: 167,
168: 168,
172: 172,
175: 175,
176: 176,
177: 177,
178: 178,
179: 179,
180: 180,
181: 181,
182: 182,
183: 183,
184: 184,
186: 186,
187: 187}}
df = pd.DataFrame(df_dict)
testpivot = df.pivot_table(index='logtime_round', columns=['varname', 'zone'], values='value', aggfunc=lambda x: x)
解决方案
2017-05-01 06:20:00
您为导致列表结果的每个区域和 varname都有重复的值。
要获得清晰的视图,请尝试
df.pivot_table(index='logtime_round', columns=['varname', 'zone'], values='value', aggfunc=lambda x: x.to_list())
结果:
varname HeatingSetpoint SetpointMode
zone 0.0 1.0 2.0 3.0 4.0 5.0 0.0 1.0 2.0 3.0 4.0 5.0
logtime_round
2017-05-01 06:00:00 [17.0] [14.5] [14.5] [14.5] [14.5] [15.0] [100.0] [100.0] [100.0] [100.0] [100.0] [100.0]
2017-05-01 06:05:00 [17.0] [17.0] [14.5] [17.0] [17.0] [15.0] [100.0] [100.0] [100.0] [100.0] [100.0] [100.0]
2017-05-01 06:20:00 [17.0, 14.5] [17.0, 17.0] [14.5, 14.5] [17.0, 17.0] [17.0, 17.0] [15.0, 15.0] [100.0, 100.0] [100.0, 100.0] [100.0, 100.0] [100.0, 100.0] [100.0, 100.0] [100.0, 100.0]
2017-05-01 06:30:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN [100.0] [100.0]
现在解决这个问题需要您决定要对重复项做什么。一个解决方案是只取第一个值重复。
df.pivot_table(index='logtime_round', columns=['varname', 'zone'], values='value', aggfunc=lambda x: x.iloc[0])
结果:
varname HeatingSetpoint SetpointMode
zone 0.0 1.0 2.0 3.0 4.0 5.0 0.0 1.0 2.0 3.0 4.0 5.0
logtime_round
2017-05-01 06:00:00 17.0 14.5 14.5 14.5 14.5 15.0 100.0 100.0 100.0 100.0 100.0 100.0
2017-05-01 06:05:00 17.0 17.0 14.5 17.0 17.0 15.0 100.0 100.0 100.0 100.0 100.0 100.0
2017-05-01 06:20:00 17.0 17.0 14.5 17.0 17.0 15.0 100.0 100.0 100.0 100.0 100.0 100.0
2017-05-01 06:30:00 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 100.0 100.0
推荐阅读
- javascript - 选择一条线来改进。初学者效率代码问题
- cloudflare - 在 Cloudflare 工作器中缓存每个获取请求
- c# - 成功保存记录后显示消息
- java - setOnClickListener 中的 SQLException(new View.OnClickListener() - Android Studio
- javascript - 使用 FileReader 发送原始文件数据
- lotus-domino - 在 Domino 服务器端签署数据库
- dotnetnuke - 在 2sxc 应用程序中创建新视图时,无法设置“视图中使用的数据模型”字段
- apex - 异步函数中的 RefreshApex
- vuejs2 - 如何在 vue js 中使用 bootstrap swiper
- c# - Azure App Config HMAC 身份验证返回未经授权的错误