List 将数据框的列打印到单独的文件+;带有日期时间的数据帧(分钟/秒)
我试图在Python2.7中打印熊猫数据框的列以分隔*.csv文件 使用这段代码,我得到了一个包含4列和日期索引的数据框:List 将数据框的列打印到单独的文件+;带有日期时间的数据帧(分钟/秒),list,python-2.7,datetime,pandas,append,List,Python 2.7,Datetime,Pandas,Append,我试图在Python2.7中打印熊猫数据框的列以分隔*.csv文件 使用这段代码,我得到了一个包含4列和日期索引的数据框: import pandas as pd import numpy as np col_headers = list('ABCD') dates = pd.date_range(dt.datetime.today().strftime("%m/%d/%Y"),periods=rows) df2 = pd.DataFrame(np.random.randn(10, 4), i
import pandas as pd
import numpy as np
col_headers = list('ABCD')
dates = pd.date_range(dt.datetime.today().strftime("%m/%d/%Y"),periods=rows)
df2 = pd.DataFrame(np.random.randn(10, 4), index=dates, columns = col_headers)
df = df2.tz_localize('UTC') #this does not seem to be giving me hours/minutes/seconds
然后删除索引并将其设置为单独的列:
df['Date'] = df.index
col_headers.append('Date') #update the column keys
此时,我只需要将dataframe的所有5列打印到单独的文件中。以下是我尝试过的:
for ijk in range(0,len(col_headers)):
df.to_csv('output' + str(ijk) + '.csv', columns = col_headers[ijk])
我收到以下错误消息:
KeyError: "[['D', 'a', 't', 'e']] are not in ALL in the [columns]"
如果我说:
for ijk in range(0,len(col_headers)-1):
然后它工作,但不打印“日期”束。那不是我想要的。我还需要打印日期列
问题:
- 如何将“日期”列打印到*.csv文件中
- 我如何用小时、分和秒来计算时间?如果 行数从10更改为5000,那么秒数是否会从数据帧的一行更改为下一行
dates = pd.date_range(dt.datetime.today().strftime("%m/%d/%Y %H:%M"),periods=rows)
我不太理解您的逻辑,但以下是一种更简单的方法:
for col in df:
df[col].to_csv('output' + col + '.csv')
例如:
In [41]:
for col in df2:
print('output' + col + '.csv')
outputA.csv
outputB.csv
outputC.csv
outputD.csv
outputDate.csv
埃德彻姆:我想你指的是for循环中的逻辑。我的意思是:col_headers列表包含所有列名。如果我一次循环一列(通过循环),并在每次迭代中输出到*.csv,那么我可以手动指定在每次迭代中打印哪个列。为此,我将循环计数器设置为从0(第一个列表元素)到最后一个循环元素的范围(0,len(col_headers))。此计数器规范中是否存在阻止它拾取最后一个列表元素(日期)的内容?问题是您正在生成从0到列列表len的范围,并使用索引(这是一个数字)将其索引回df,但这些列具有名称而不是索引,因此它将失败。我的回答不那么冗长,而是用一种更直观的方式来实现同样的目标伊莫德丘姆:是的,我明白你的意思。你的方法有效-我刚刚测试了它,它回答了我的问题。这肯定更简单。然而,让我困惑的是,为什么我的方法与“-1”(即拾取列标题A、B、C、D)一起工作,而在我删除“-1”(即拾取列标题A、B、C、D、日期)时不工作。这是我无法理解的部分???是的,列确实有名称,但是,使用我的方法,我只是在列名称之间循环-这应该适用于所有5列,如果它适用于4列的话。