python - 用条件连接 csv 文件
问题描述
我想以尽可能快的方式将多个 csv 文件与列值的条件连接起来。
我有一些有效的代码,但是在我将数据帧减少到我需要的站点(通过station_number
列中的值)之前,它会连接所有 csv 文件的所有行。我想先选择我需要的行,然后再进行连接,这样可以提高运行时间。感谢您的任何建议!
station = int(input("station number? "))
def Datastations (station,path):
filepaths = [os.path.join(path, f) for f in listdir(path) if f.endswith('.csv')]
df = pd.concat(map(pd.read_csv, filepaths))
df = df[df.station_number==station]
return (df)
df1 = Datastations(station,"refdata/obs")
df2 = Datastations(station,"refdata/BoM_ETA_20160501-20170430/obs")
解决方案
你没有说你遇到了什么麻烦,所以我只能为你重新排序:
import pandas as pd
import os
def Datastations (station,path):
filepaths = [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.csv')]
def process_csv(file_name):
df = pd.read_csv(file_name)
return df[df.station_number==station]
return pd.concat(map(process_csv, filepaths))
推荐阅读
- c# - Using select, option value inside the actionlink
- javascript - 从模板字符串/文字中获取元素的 id
- javascript - 如何使用选择类的“getNextDataRange()”访问新间隔?
- c# - How to for loop asp:label or asp:PlaceHolder tag with select asp:checkbox any checkbox in .NET C#?
- android - 如何在 Kotlin 中使用相同的按钮隐藏和显示视图
- sap - 在后台-SAP Hyrbis 1905 中看不到运行 cronjob 按钮?
- lottie - 如何在不提供路径的情况下直接使用 JSON 内容加载 lottie-web 动画
- rust - 如何使用 actix-web 的 Json 类型解决“serde::Deserialize 的实现不够通用”?
- xamarin.forms - ZXING 手机重复扫描问题
- python - IndexError:列表索引超出创建新列表的范围