【问题标题】:How to read a CSV to pandas and get the value of one cell如何将 CSV 读取到 pandas 并获取一个单元格的值
【发布时间】:2019-09-12 01:06:00
【问题描述】:

我有一个 CSV 文件,我想: 1. 将 CSV 作为数据框导入 2. 一次读一排 3. 将每个单元格的 VALUES 复制到单独的字符串中 4.打印字符串 5. 转到下一行并重复步骤 3-4 直到完成。

我的代码可以正常工作,它确实会读入并打印前 2 行,但我的 CSVC 文件中有 6 行。

我尝试添加一个索引字段,但这并没有太大帮助,打印了 3 行而不是 6 行。

这是我的 CSV 文件的样子:(额外的行返回是为了让您可以阅读它,没有显示在我的文件中。

00C525B70C246049E4.dwg,011021a.dwg

00CD5B2301DF204DCC.dwg,010636e.dwg

00F70B6C0B1EF04B54.dwg,005159v.dwg

0A02B9F7087BF040D5.dwg,003552n.dwg

0A1EE7CC078B404C64.dwg,020526c.dwg

0A1F67D201CCD04F81.doc,X1771-a.doc

import pandas

colnames = ['infocard','file_name']
data = pandas.read_csv('E:/test_Files_To_Rename.csv', names=colnames)

for i, elem in enumerate(data,0):

        sfile = data.loc[i,"infocard"]
        dst = data.loc[i,"file_name"]
     print( sfile +' to ' + dst )

一旦我让程序打印两个不同的文件名,我想用以下方式替换打印语句:

os.rename(sfile, dst)

所以我可以重命名文件。我正在测试 6 个文件,我的数据库有 50,000 个文件,这就是我想使用脚本的原因。

这是显示的内容:

00C525B70C246049E4.dwg 到 011021a.dwg

00CD5B2301DF204DCC.dwg 转 010636e.dwg

有什么想法吗? 谢谢!

【问题讨论】:

  • 文件重命名后是否使用数据框?如果没有,我建议改用csv 模块,因为csv.reader 可能会提高性能并避免从单独的数据结构中读取
  • 关于您的实际问题:当您在数据框上调用 enumerate 时,您只是在 df.xml 中创建列名的枚举。尝试打印出list(enumerate(data)) 以了解我的意思。您可能会发现 data.iterrows() 对您的目的更有帮助。

标签: python pandas csv


【解决方案1】:

我使用以下代码遍历 .csv 电子表格:

import pandas as pd

df = pd.read_csv('/home/stephen/Desktop/data.csv')

for i in range(len(df)):
    sfile = df.values[i][0]
    dst = df.values[i][1]
    print(sfile + ' to ' + dst)

我得到以下输出:

00C525B70C246049E4.dwg to 011021a.dwg
00CD5B2301DF204DCC.dwg to 010636e.dwg
00F70B6C0B1EF04B54.dwg to 005159v.dwg
0A02B9F7087BF040D5.dwg to 003552n.dwg
0A1EE7CC078B404C64.dwg to 020526c.dwg
0A1F67D201CCD04F81.doc to X1771-a.doc

这是我使用的电子表格:

【讨论】:

  • 做到了。我能够添加代码行 os.rename(sfile, dst) 来重命名文件。我曾尝试过您之前所说的方法,但是我不知道如何获取该列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
相关资源
最近更新 更多