我有一个在完成某些操作后获得的数据帧。这就是我的数据框架的样子
date metric stat val device
0 2018-03-21 cpu mean 76.724406 10.41.100.1
3 2018-03-21 cpu std 124.285789 10.41.100.1
现在我想将它转换为列表中存储的字符串列表,如下所示
lis = [["2018-03-21", "cpu", "mean", "76.724406", "10.41.100.1"],
["2018-03-21", "cpu", "mean", "124.285789", "10.41.100.1"]]
我做了类似的事
for i in df:
print(df[i].tolist())
但我得到这样的东西
[Timestamp('2018-03-21 00:00:00'), Timestamp('2018-03-21 00:00:00')]
['cpu', 'cpu']
['mean', 'std']
[76.72440613174048, 124.28578926665278]
['10.41.100.1', '10.41.100.1']
但我希望格式如上所述。我怎么能这样做?
答案 0 :(得分:1)
我认为string
首先需要astype
,然后DataFrame
将numpy array
转换为list
,最后lis = df.astype(str).values.tolist()
print (lis)
[['2018-03-21', 'cpu', 'mean', '76.724406', '10.41.100.1'],
['2018-03-21', 'cpu', 'std', '124.285789', '10.41.100.1']]
调用{{} 3}}:
def method(self, should_loop=False):
if should_loop:
raise Exception("You really want me to loop forever?")
while should_loop:
self.side_effect()
答案 1 :(得分:1)
jezrael的accepted solution作品。
但是,我建议您直接利用numpy
表示,因为这是一种更有效的存储和操作数据的方法。
在处理结构化数据时,列表比numpy
表示更有用的情况很少。
您可以通过以下方式执行此操作:
res = df.values.astype(str)
这会返回dtype <U11
,而df.astype(str).values
会返回dtype Object
。这是数据在内部存储的重要差异。