如何获取pandas数据帧的字符串列表?

时间:2018-04-23 10:20:35

标签: python python-3.x pandas dataframe

我有一个在完成某些操作后获得的数据帧。这就是我的数据框架的样子

        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']

但我希望格式如上所述。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我认为string首先需要astype,然后DataFramenumpy 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。这是数据在内部存储的重要差异。