gpt4 book ai didi

python - 从 pandas 数据帧的列索引获取字符串列表

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:20 24 4
gpt4 key购买 nike

首先,这是我的 .xlsx 时间序列数据的样子:

What the data looks like in excel

这是我的阅读方式:

def loaddata(filepaths):
t1 = time.clock()
for i in range(len(filepaths)):
xl = pd.ExcelFile(filepaths[i])
df = xl.parse(xl.sheet_names[0], header=0, index_col=2, skiprows=[0,2,3,4], parse_dates=True)
df = df.dropna(axis=1, how='all')
df = df.drop(['Decimal Year Day', 'Decimal Year Day.1', 'RECORD'], axis=1)
df.index = pd.DatetimeIndex(((df.index.asi8/(1e9*60)).round()*1e9*60).astype(np.int64)).values

if i == 0:
dfs = df
else:
dfs = concat([dfs, df], axis=1)

t2 = time.clock()
print "Files loaded into dataframe in %s seconds" %(t2-t1)

return dfs

files = ["London Lysimeters corrected 5min.xlsx"]
data = loaddata(files)

我需要做的是将列标签和单位(第 2 行和第 3 行)以及值读取到 pandas 数据框中,并能够以字符串列表的形式访问标签和单位行。我似乎不知道如何加载第 2 行和第 3 行并将时间正确读入 pandas datetimeindex,但如果我只上传标签,它就可以正常工作。另外,我到处都查过了,但不知道如何将列标题作为列表获取。

如果有人可以帮助解决这些问题,我将不胜感激。

最佳答案

首先,去掉 for i in range(len(filepaths)) ! pythonic方式是 for i, filepath in enumerate(filepaths) enumerate 给出一个元组,所以你可以说 ExcelFile(filepath)而不是ExcelFile(filepaths[i]) .

我认为你的两个问题是相关的。如果我正确地阅读了您的代码,那么当您包含第 2 行和第 3 行时,将无法解析日期,因为时间戳列不是同质的。并非所有时间戳。

您可以使用 Hierarchical index获取(column, label, unit)中的数据格式。首先读取标题信息可能是最简单的。然后分别读取数据并在事后设置列(我现在没有方便的 Excel,但我认为我使用的所有 read_csv 选项也可用于 xlrd):

In [7]: df_header = pd.read_csv('test.csv', nrows=2, index_col='three')

In [8]: df_header
Out[8]:
one two four
three
Timestamp Decimal Decimal record
ts ref ref rn

In [9]: df_data = pd.read_csv('test.csv', names=df_header.columns,
...: skiprows=4, parse_dates=True, index_col=2)

In [10]: df_data
Out[10]:
one two four
2012-08-29 07:10:00 32.1 32.0 232
2012-08-29 09:10:00 1.1 1.2 233

In [11]: cols = pd.MultiIndex.from_tuples([tuple([x] + df_header[x].tolist())
....: for x in df_header])

In [12]: cols
Out[12]:
MultiIndex
[one Decimal ref, two Decimal ref, four record rn ]

In [14]: df_data.columns = cols

In [15]: df_data
Out[15]:
one two four
Decimal Decimal record
ref ref rn
2012-08-29 07:10:00 32.1 32.0 232
2012-08-29 09:10:00 1.1 1.2 233

这应该会让您在代码中开始删除列并开始连接。另请查看 developers docs 。看起来读取 Excel 文件的语法正在被清理(好多了!)。您也许可以使用parse_cols带有整数列表的参数以避免稍后删除列。

哦,您可以使用 df_data.columns.tolist() 获取字符串列表

关于python - 从 pandas 数据帧的列索引获取字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17800630/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com