【问题标题】:how to remove spaces and extra commas between commas and replace them by ' ' in csv by python如何删除逗号之间的空格和多余的逗号,并将它们替换为 '' 在 csv 中由 python
【发布时间】:2018-10-22 10:36:47
【问题描述】:

这是我的 CSV:

AAP,AAMC,AAPL,AMT

106.08999633789062,,,

,122.88999938964844,,

,,109.80000305175781,

,,,118.55000305175781

由于所有的“,”和换行符,我的第二行在楼梯上打印如何使用 python 获取同一行缩进中的所有数据?

我尝试过使用 .replace 功能,但每次都需要硬编码。有没有办法可以找到模式:

所以预期的输出是这样的:

AAP,AAMC,AAPL,AMT
106.08999633789062,122.88999938964844,109.80000305175781,118.55000305175781

【问题讨论】:

  • 您的 csv 包含 4 行,大部分为空。您既不显示创建也不处理它​​的代码。请分享您的努力 - 我们不是编码服务。
  • 如果那些值应该是一行,那么您宁愿修复产生损坏 csv 的代码,而不是试图猜测哪个部分属于哪一行。
  • @PatrickArtner 向我道歉,我忘了发布代码,无论如何我可以告诉你,这是我使用从 python 获取 Stock 的 pandas_data-reader 函数下载的数据帧的输出值,我正在尝试水平连接多个数据帧
  • @brunodesthuilliers 向我道歉,我忘了发布代码,无论如何我可以告诉你,这是我使用从 python 获取 Stock 的 pandas_data-reader 函数下载的数据帧的输出值,我正在尝试水平连接多个数据帧

标签: python csv data-analysis


【解决方案1】:

试试这个:

import csv
data = {}
with open('input.txt') as input_file:
    reader = csv.DictReader(input_file, delimiter=',')
    for row in reader:
        for key, value in row.items():
            if value:
                data[key] = value
with open('output.txt', 'w', newline='') as output_file:
    writer = csv.DictWriter(output_file, delimiter=',', fieldnames=data.keys())
    writer.writeheader()
    writer.writerow(data)

数据是:

{'AAMC': '122.88999938964844',
 'AAP': '106.08999633789062',
 'AAPL': '109.80000305175781',
 'AMT': '118.55000305175781'}

输出.txt:

AAP,AAMC,AAPL,AMT
106.08999633789062,122.88999938964844,109.80000305175781,118.55000305175781

【讨论】:

  • 非常感谢这个最佳解决方案,当我使用 DictReader 时,它似乎对我有效。
【解决方案2】:

这是一种方法:

import pandas as pd

df = pd.read_csv('a.csv')
m = df.max()
print(list(m.keys())); print(list(m.values))
# => ['AAP', 'AAMC', 'AAPL', 'AMT']
# => [106.08999633789062, 122.88999938964844, 109.8000030517578, 118.5500030517578]

【讨论】:

  • 感谢您的解决方案,如果我想在 shell 上打印它可以正常工作,但是我如何将列表写入 csv,因为它不可调用??
【解决方案3】:

你可以试试下面的代码:

import pandas as pd 
df=pd.read_csv("a.csv",delimeter=',',skipinitialspace=True,delim_whitespace=True)
print(list(df.keys()))
print(list(df.values()))
df.to_csv("b.csv",index=False)

【讨论】:

  • 感谢您的解决方案,如果我想在 shell 上打印它可以正常工作,但是我如何将列表写入 csv,因为它不可调用??
猜你喜欢
  • 2014-10-31
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
相关资源
最近更新 更多