【问题标题】:How to create custmzed list from csv in python 3? [duplicate]如何在 python 3 中从 csv 创建 custmzed 列表? [复制]
【发布时间】:2018-09-30 00:04:39
【问题描述】:

我有如下的 csv 文件

Id,Date,P_Sales_Qty,Category
1,2016-03-20,1,17
2,2016-03-23,1,17
3,2016-03-25,2,17
4,2016-03-31,2,17
5,2016-04-02,3,17
6,2016-04-04,1,17
7,2016-04-09,1,17
8,2016-04-10,1,17
9,2016-04-28,1,17
10,2016-04-29,2,17
11,2016-04-30,1,17

我想创建一个类似的列表:

[2016-03-20 1   17
2016-03-23  1   17
2016-03-25  2   17
2016-03-31  2   17
2016-04-02  3   17
2016-04-04  1   17
2016-04-09  1   17
2016-04-10  1   17
2016-04-28  1   17
2016-04-29  2   17
2016-04-30  1   17]

请帮助解决这个问题,我该如何实现?

【问题讨论】:

  • Id 是列还是 index ?什么返回print (df.info())
  • Id 是列而不是索引
  • 谢谢,所以使用我的解决方案。

标签: python pandas


【解决方案1】:

看来需要:

a = df[['Date','P_Sales_Qty','Category']].to_csv(sep=' ', header=None, index=False)
print (a)
2016-03-20 1 17
2016-03-23 1 17
2016-03-25 2 17
2016-03-31 2 17
2016-04-02 3 17
2016-04-04 1 17
2016-04-09 1 17
2016-04-10 1 17
2016-04-28 1 17
2016-04-29 2 17
2016-04-30 1 17

如果将其包装到列表中获取:

a = [df[['Date','P_Sales_Qty','Category']].to_csv(sep=' ', header=None, index=False)]
print (a)

['2016-03-20 1 17\n2016-03-23 1 17\n2016-03-25 2 17\n2016-03-31 2 17\n2016-04-02 3 17\n2016-04-04 1 17\n2016-04-09 1 17\n2016-04-10 1 17\n2016-04-28 1 17\n2016-04-29 2 17\n2016-04-30 1 17\n']

【讨论】:

  • 感谢您的快速回复,我不想创建嵌套列表。我想创建我提到的问题的确切输出。
  • @saikumar - 你认为二维数组吗?检查编辑的答案。
  • @jezrael,我认为他想要一个未包装的列表,但它的输出似乎很奇怪。
  • @jezrael,感谢您的回复,但我正在获取列表,对于新行中的每个变量,但我想要像 ['2016-03-20'1 17 下一行下一条记录,如有问题的预期输出
  • @saikumar - 我有点困惑,我修改了答案,但仍然不确定需要什么。你能解释更多吗?
【解决方案2】:

只需将values 属性用于您的dataframe

list = df.values.tolist()
In[1] : list
Out[1]: [['2016-03-20', 1, 17],
         ..................
         ]

第二步是使用reduce方法来获取一个简单的列表。

from functools import reduce
list = reduce(lambda x, y: x+y, list)

【讨论】:

  • 嗨 Mihai,感谢您的快速回复,我不想创建嵌套列表。我想创建我提到的问题的精确输出。
猜你喜欢
  • 1970-01-01
  • 2020-11-02
  • 2019-11-12
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 2017-11-15
  • 2020-04-17
  • 1970-01-01
相关资源
最近更新 更多