pandas处理csv文件时,添加索引 2019-02-27
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas处理csv文件时,添加索引 2019-02-27相关的知识,希望对你有一定的参考价值。
参考技术A遇到如下“没有”索引的文件,处理及其不方便。
可以看到
pandas将第一行处理为了列索引,同时由于表格中的第一格(左上角)不为空,因此从左侧开始的第一列并不为行索引,重新为数据添加了新的行索引,从第二行开始,0为初始第一行。
这里有两个语法是df.reindex()和df.rename()
修改索引完成,但成功出现错误。
添加数据loc是比较方便的做法,但如果第n行有数据,那么new_data将会替换这个数据
new_data=[\'a\',\'b\',\'c\',\'d\']
df.loc[n] = new_data
另一种做法是用append,直接在数据末尾增加一行
data=\'a\':9,\'b\':10,\'c\':11,\'d\':12
df.append(data,ignore_index=True)
看看处理结果
data.sort_values(by=\'列名\')
使用 Pandas 读取 csv 文件时将时间戳元组解析为日期
【中文标题】使用 Pandas 读取 csv 文件时将时间戳元组解析为日期【英文标题】:Parse Timestamp tuple into date while reading csv file with Pandas 【发布时间】:2021-06-14 04:41:07 【问题描述】:我有许多 CSV 文件需要解析为 Pandas 数据帧,以时间为索引。我自动解析文件usingdf = pd.read_csv("infile.csv",parse_dates=["index"],dayfirst=False)
中的日期。对于我的一些文件,这会失败,因为找不到正确的日期格式,而是一个看起来像这样的时间戳元组:
,index,tos,model_member,member_id,model,experiment_id
0,"(0, Timestamp('1950-01-31 00:00:00'), 0)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
1,"(0, Timestamp('1950-01-31 00:00:00'), 1)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
2,"(0, Timestamp('1950-01-31 00:00:00'), 2)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
3,"(0, Timestamp('1950-01-31 00:00:00'), 3)",4.740208145290402,KACE-1-0-G-r1i1p1f1_ssp245,r1i1p1f1_ssp245,KACE-1-0-G,ssp245
在读取文件期间,我一直在寻找一种将其转换为日期的好方法,但我找不到。任何的意见都将会有帮助。时间戳来自从 NetCDF 文件中提取数据,然后使用 Python 库 xarray
和函数 [xarray.Dataset.to_netcdf][2]
将数据写入 CSV。如果有一种方法可以避免首先将 Timestamp 写入文件,而是使用字符串日期,我也会非常感兴趣。 %Y-%m-%h
。我看到了与我很接近的问题,但their solutions 对我不起作用。我目前将数据写入文件的方式是,我认为这可行:
df.to_csv("filename.csv", date_format='%Y-%m-%d')
【问题讨论】:
【参考方案1】:您可以在不进行任何自动日期解析的情况下读取 csv,然后通过捕获 r"'(.*)'"
手动读取日期 extract
:
df = pd.read_csv('infile.csv', index_col=0)
df['index'] = df['index'].str.extract(r"'(.*)'")
df['index'] = pd.to_datetime(df['index'])
index | tos | model_member | member_id | model | experiment_id | |
---|---|---|---|---|---|---|
0 | 1950-01-31 | 4.740208 | KACE-1-0-G-r1i1p1f1_ssp245 | r1i1p1f1_ssp245 | KACE-1-0-G | ssp245 |
1 | 1950-01-31 | 4.740208 | KACE-1-0-G-r1i1p1f1_ssp245 | r1i1p1f1_ssp245 | KACE-1-0-G | ssp245 |
2 | 1950-01-31 | 4.740208 | KACE-1-0-G-r1i1p1f1_ssp245 | r1i1p1f1_ssp245 | KACE-1-0-G | ssp245 |
3 | 1950-01-31 | 4.740208 | KACE-1-0-G-r1i1p1f1_ssp245 | r1i1p1f1_ssp245 | KACE-1-0-G | ssp245 |
【讨论】:
太棒了!您的解决方案就像一个魅力。我以后一定会更多地使用extract
方法。以上是关于pandas处理csv文件时,添加索引 2019-02-27的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pandas.read_csv() 将索引数据读取为字符串?