<p>按<code>SamplingTime</code>分组并调用<code>to_dict</code>两次(一次在组中,一次在整组中)应该可以做您想要的事情。你知道吗</p>
<pre><code>df2 = df.rename(columns = {"RegisteredTime": "SamplingTime"}) #assigning to another df in case you want to keep the original column name
df2.head(10)
Out[196]:
SamplingTime Start Value
0 17/04/2016 15:30 18/04/2016 00:00 1000
1 17/04/2016 15:30 18/04/2016 01:00 2000
2 17/04/2016 15:30 18/04/2016 02:00 3000
3 17/04/2016 15:30 18/04/2016 03:00 4000
4 17/04/2016 15:30 18/04/2016 04:00 5000
5 17/04/2016 15:40 18/04/2016 00:00 1000
6 17/04/2016 15:40 18/04/2016 01:00 2000
7 17/04/2016 15:40 18/04/2016 02:00 3000
8 17/04/2016 15:40 18/04/2016 03:00 4000
9 17/04/2016 15:40 18/04/2016 04:00 5000
</code></pre>
<hr/>
<pre><code>dtj = pd.DataFrame(df2.groupby("SamplingTime")["Start", "Value"].apply(lambda x: x.to_dict("r")), columns = ["Values"]).reset_index().to_dict("r")
print(dtj)
Out[199]:
[{'SamplingTime': '17/04/2016 15:30',
'Values': [{'Start': '18/04/2016 00:00', 'Value': 1000L},
{'Start': '18/04/2016 01:00', 'Value': 2000L},
{'Start': '18/04/2016 02:00', 'Value': 3000L},
{'Start': '18/04/2016 03:00', 'Value': 4000L},
{'Start': '18/04/2016 04:00', 'Value': 5000L}]},
{'SamplingTime': '17/04/2016 15:40',
'Values': [{'Start': '18/04/2016 00:00', 'Value': 1000L},
{'Start': '18/04/2016 01:00', 'Value': 2000L},
{'Start': '18/04/2016 02:00', 'Value': 3000L},
{'Start': '18/04/2016 03:00', 'Value': 4000L},
{'Start': '18/04/2016 04:00', 'Value': 5000L}]},
{'SamplingTime': '17/04/2016 15:50',
'Values': [{'Start': '18/04/2016 00:00', 'Value': 1000L},
{'Start': '18/04/2016 01:00', 'Value': 2000L},
{'Start': '18/04/2016 02:00', 'Value': 3000L},
{'Start': '18/04/2016 03:00', 'Value': 4000L},
{'Start': '18/04/2016 04:00', 'Value': 5000L}]}]
</code></pre>
<p>这是一个列表,因此如果您需要它作为JSON字符串,您可以调用<code>json.dumps(dtj)</code>,也可以将最后一个<code>to_dict</code>更改为<code>to.json(orient = "records")</code>。你知道吗</p>