gpt4 book ai didi

python - 取出 CSV 的一些内容

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

我是编程新手,我有一堆 CSV 文件,每个文件大约有 50 到 60 行。在未指定数量的行之后,第二列中有一个名为“NAME”的字符串。我想获取“NAME”之后第二列中的所有内容并将其打印到文本文件中。我最初想使用 pandas 和skiprows 来执行此操作,但问题是我运行的每个 csv 都会在不同的行中包含“NAME”。另外,如果有帮助的话,每个 CSV 中“NAME”之前三行都有一个空行。

header, header   
header, header
NUMBER,ITEM
N1,Shoe
N2,Heel
N3,Tee, random stuff
N4,Polo, random stuff
N5,Sneaker
N10,Heel
N11,Tee
...
...
...

How
Count 17
SORT,NAME
H1,Thing, random stuff
H2,WTANK
H3,TEE2
H4,TEE

我还希望文本文件中没有重复,因为我将在目录中运行大约 1000 个 CSV。这是我开始使用的一些代码,也是我遇到困难的地方。

import pandas as pd
import csv
import glob

fns = glob.glob('*.csv') #goes through every CSV file in director
for csv in fns:
prod_df = pd.read_csv(csv, skiprows=???)
with open (os.path.join('out', fn), 'wb') as f:
w = csv.writer(f)
test_alias = prod_df['NAME'].unique()
w.writerow(row)

我知道它不起作用,并且可能不是一段很好的代码。任何帮助将不胜感激。谢谢!

最佳答案

假设 NAME 仅出现一次,您可以使用 get_loc

import pandas as pd
import glob

fn = 'out.csv'
fns = glob.glob('*.csv') #goes through every CSV file in director
colname = 'ITEM'
rowname = 'NAME'
for csv in fns:
s = pd.read_csv(csv, usecols=[colname], squeeze=True, skiprows=7, header=0)
row_idx = pd.Index(s).get_loc(rowname)
sub_items = s[row_idx + 1:]
pd.Series(sub_items.unique()).to_csv(fn, mode='a')

编辑:说明

usecols 仅读取您需要的列,即 ITEM

squeeze=True 返回一个Series

get_loc 返回其参数的索引

您说过您想要 'NAME' 之后的所有内容,因此索引为 row_idx + 1

如果您想写入 单个 csv,

mode='a' 会附加到单个 csv 文件(称为 out.csv)文件,那么你应该相应地调整你的代码

关于python - 取出 CSV 的一些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344887/

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