【问题标题】:glob Multiple CSV and np.arangeglob 多个 CSV 和 np.arange
【发布时间】:2019-06-22 15:38:24
【问题描述】:

我是python的初学者。我对循环 glob.globnp.arrange 循环有一些问题。

我有一百个 CSV 文件,如下所示:

13oct_speed_1kmh.csv
13oct_speed_2kmh.csv
and others

所有文件的结构数据如下:

Distance ID
2.14     A
82.12    B
12.45    A
21.07    B
11.42    A

我想消除基于缓冲区的距离:

np.arange(10,100,30)
array([10, 40, 70])

我使用了这个代码:

def buffer (value, threshold):
    return (value < threshold)
files = glob.glob("13oct_speed_*.csv") 
for f in files:
    df = pd.read_csv(f)
    for i in np.arange(10,100,30):
        threshold = i
        result_df = df[buffer(df["Distance"], threshold)]
        csvFileName = f + 'Buffer_' + str(threshold) + ".csv"
        result_df.to_csv(csvFileName, sep=",")

但结果很奇怪,因为循环永远不会停止(总是保存新文件)。

我希望的输出是根据缓冲区阈值消除的每个距离列文件。

我的预期输出如下所示:

13oct_speed_1kmh_buffer10.csv
13oct_speed_1kmh_buffer40.csv
13oct_speed_1kmh_buffer70.csv
13oct_speed_2kmh_buffer10.csv
13oct_speed_2kmh_buffer40.csv
13oct_speed_2kmh_buffer70.csv

如何解决?谢谢

【问题讨论】:

  • result_df = df[df["Distance"] &lt; threshold] 工作怎么样?
  • 谢谢你,完美。所以,缓冲区就不用定义了吧?
  • 不,没有必要。

标签: python pandas


【解决方案1】:

您可以省略辅助函数并将csvFileName 更改为format 以获得预期的输出,os.path.splitext 返回带有扩展名的文件名:

import os

files = glob.glob("csv/13oct_speed_*.csv") 
for f in files:
    df = pd.read_csv(f)
    for threshold in np.arange(10,100,30):
        result_df = df[df["Distance"] < threshold]
        name, extension = os.path.splitext(f)
        csvFileName = "{}_Buffer{}{}".format(name, threshold, extension)
        print (csvFileName)
        result_df.to_csv(csvFileName)

【讨论】:

猜你喜欢
  • 2019-05-02
  • 2019-09-18
  • 2021-12-06
  • 2018-05-19
  • 2021-04-24
  • 2015-06-03
  • 2014-10-09
  • 1970-01-01
  • 2018-06-29
相关资源
最近更新 更多