【问题标题】:List of Tuples to CSV到 CSV 的元组列表
【发布时间】:2019-11-19 07:30:57
【问题描述】:

我有一个看起来像这样的元组列表

  [("color", "blue"), ("size","50"), ("length","60"),("color", "red"), ("size","40")]

我想要一个像这样的csv 文件(当然没有Header,values

Header 1. 颜色 |尺寸 |长度

values 2. 蓝色 | 50 | 60

values 3. 红色 | 40 |没有

我试过了,但效果不好

with open('file.csv','w') as out:
    for title in final: # list name
        titles.append(title[0])
    csv_out=csv.writer(out)
    csv_out.writerow(titles)
    for row in final:
        csv_out.writerows(row[1])

【问题讨论】:

  • 你说的不好用是什么意思。你期待什么结果,你得到了什么结果?
  • @abhilb 我期待正如我上面写的那样,我得到了一行(行),其中所有内容都没有标题和行中的值
  • 如果两种颜色一个接一个出现,或者两个长度怎么办?这是否意味着它们与两个不同的项目有关?所有项目的属性顺序(颜色、大小、长度)是否总是相同的?由于您的数据表明可能缺少某些信息,因此在您的问题中指定这一点很重要。
  • @Thierry Lathuille 我从循环中的函数请求元组列表,并在当时返回一个列表。这个列表包含一堆元组,我想在其中使用第一个值作为标题,第二个作为 csv 文件中的值。这些元组的顺序相同但它们不一样,有时会有一个元组不在先前的返回中。在这种情况下,我想添加一个带有该元组的第一个值的新标题,并且没有或只是没有任何其他没有出现的标题

标签: python python-3.x csv tuples


【解决方案1】:

试试这个方法

import pandas as pd
import numpy as np
from collections import defaultdict 
t = [("color", "blue"), ("size","50"), ("length","60"),("color", "red"), ("size","40")]
d = dict((y, x) for x, y in t)

res = defaultdict(list) 
for key, val in sorted(d.items()): 
    res[val].append(key)

df = pd.DataFrame.from_dict(res, orient='index').fillna(np.nan).T
df.to_csv("file.csv")

【讨论】:

  • 伟大的,快乐的编码!!
【解决方案2】:

我宁愿稍微改变一下你的方法。 您可以简单地将column_names 放在一个列表中,例如

column_names = ['color', 'size', 'length']

然后我会将我的数据填充到 listlists 中,或者最好是 numpy array 之类的

data = np.array([('blue', 50, 60), ('red', 40, None)])

然后你可以通过 Pandas 简单地制作一个新的数据框

my_df = pd.DataFrame(data, columns=column_names)

这东西会给你这样的东西

>>> my_dataframe
  color size length
0  blue   50     60
1   red   40   None
>>> 

然后您可以使用 pandas 内置的to_csv 方法将数据框在本地保存为 CSV 文件。

my_datframe.to_csv('file_name.csv')

完成了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    相关资源
    最近更新 更多