【问题标题】:Read text file into excel without putting all data in first column将文本文件读入excel而不将所有数据放在第一列
【发布时间】:2020-11-11 02:58:00
【问题描述】:

我编写了一些代码,从网络请求一个文本文件,读取它,并将必要的数据输出到一个 Excel 电子表格中。但是,它并不完全符合我需要的格式,因为它将每一行写为一个项目,并将其全部放入第一列。下面是我的代码,以及我的代码当前所代表的输出图像。我想要一个日期列,然后每个牲畜的处理量都有一个列。

import pandas as pd
import os
import urllib.request


filename = "Livestock Slaughter.txt"
os.chdir(r'S:\1WORKING\FINANCIAL ANALYST\Shawn Schreier\Commodity Dashboard')
directory = os.getcwd()
url = 'https://www.ams.usda.gov/mnreports/sj_ls710.txt'
data=urllib.request.urlretrieve(url, "Slaughter Rates.txt")
df = pd.read_csv("Slaughter Rates.txt", sep='\t', skiprows=5, nrows=3)
df.to_excel('Slaughter Data.xlsx')

【问题讨论】:

标签: python pandas csv python-requests


【解决方案1】:

与在 cmets 中一样,您可以使用 delim_whitespace=True 加载 CSV,然后进行一些后处理以获取正确的数据。你也可以直接把网址放到pd.read_csv()

import pandas as pd


df = pd.read_csv('https://www.ams.usda.gov/mnreports/sj_ls710.txt', delim_whitespace=True, skiprows=5, nrows=3).reset_index()
df = pd.concat([df.loc[:, 'level_0':'level_2'].agg(' '.join, axis=1), df.iloc[:, 3:]], axis=1)

print(df)
df.to_csv('data.csv')

打印:

                         0   CATTLE CALVES     HOGS  SHEEP
0  Tuesday 07/21/2020 (est  118,000  2,000  478,000  7,000
1           Week ago (est)  119,000  2,000  475,000  8,000
2           Year ago (act)  121,000  3,000  476,000  8,000

并将数据保存为data.csv(来自 LibreOffice 的屏幕截图):

【讨论】:

  • 谢谢!这让我可以做我需要做的事情。
猜你喜欢
  • 2022-01-27
  • 2015-09-04
  • 2015-04-04
  • 1970-01-01
  • 2021-07-25
  • 2011-05-25
  • 1970-01-01
  • 2011-12-24
  • 2021-01-13
相关资源
最近更新 更多