【问题标题】:How to call a specific word from csv file using python如何使用python从csv文件中调用特定的单词
【发布时间】:2020-06-10 00:25:20
【问题描述】:

假设如果我有一个包含两列 A, B.csv 文件,那么如果我调用 A 列第 3 行,那么如何打印 B 列第 3 行数据。请帮助我,因为我是代码初学者。

我只想调用一个输入值并从下一列打印相同的行值。

这是我的代码:

如果消息中有“你好”:

     with open('data.csv', "r") as f:
        reader = csv.reader(f)
        chat = {}

        for row in reader:
            key = row[0]
            chat[key] = row[1:]
    try:
        gotreply = chat[msg]
    except KeyError:
        gotreply = 'null'

    print(gotreply)

     if gotreply == 'null':
        print("Sorry! I didn't understand. I'm still learning.")
    else:
        print("Input Again")

【问题讨论】:

  • 处理 csv 文件的方法有多种。您可以发布示例数据和尝试解决方案的脚本吗?只需几行代码即可使用csv 模块将文件读入行列表。 pandas 也很受欢迎。找一些例子,选择一种方法,然后给我们一个基本的程序来工作。
  • if "Hello" in msg: with open('data.csv', "r") as f: reader = csv.reader(f) chat = {} for row in reader: key = row[0] chat[key] = row[1:] try: gotreply = chat[msg] except KeyError: gotreply = 'null' print(gotreply) if gotreply == 'null': print("对不起!我没有'不明白。我还在学习。") else: print("Input Again")

标签: python database csv row multiple-columns


【解决方案1】:

不确定你到底在问什么,但你可以做

import pandas as pd

foo_df = pd.read_csv('files/example.csv')

if foo_df.A[2] == "c":
    print(foo_df.B[2])

【讨论】:

  • 嗨,谢谢,它给了我一个关于调用特定数据的好主意,但我的问题是调用列 B 数据,从用户输入 i:e 用户将从列 A 行调用并获得输出为B 列在同一行中。
【解决方案2】:

我建议您熟悉 Pandas 作为解析数据的优雅方式。

示例 .csv:

A,B
a,b
b,c
c,d
d,e

其中 A 和 B 是您的列名。

pandas.read_csv() 将读取 .csv 并将其放入 Dataframe。 Check out the docs 试一试。

import pandas as pd

foo_df = pd.read_csv('/path/to/example.csv')

print(foo_df)

应该返回

   A  B
0  a  b
1  b  c
2  c  d
3  d  e    

从那里,只需查看文档即可从数据框中检索您想要的内容。

【讨论】:

  • 嗨,谢谢,它给了我一个关于调用数据的好主意,但我的问题是调用列 B 数据,从用户输入 i:e 用户将从列 A 行调用并作为列输出B 在同一行。
【解决方案3】:

我也是初学者,这是我在这里的第一篇文章,所以我会尽力帮助你。

首先我假设您的 CSV 文件有标题,并且我假设您的标题称为“A”和“B”。

import csv

with open('test.csv', mode='r') as csv_file:
    csv_reader = csv.reader(csv_file)
    row_count = 1
    for i in csv_reader:
        if row_count == 4:
            print(i[1])  # prints second column of third row
        row_count += 1

可能有一种更有效的方法,但我也是这个游戏的新手。

【讨论】:

    【解决方案4】:

    当我刚开始的时候,我也有这样的疑问。 Pandas Slicing会对你有所帮助。

    首先 import Pandas module as 'pd'(import pandas as pd),因为它是最常用的形式,你会更容易适应。

    import pandas as pd
    data = [['tom', 10], ['nick', 15], ['juli', 14], ['tony', 12]]
    df = pd.DataFrame(data, columns = ['A', 'B'])
    

    这将创建一个示例数据框或简单的“df”:

          A     B
    0   tom     10
    1   nick    15
    2   juli    14
    3   tony    12
    

    使用 pandas df.loc 中最常见的切片器之一,您可以获得所需的结果:

    df.loc[2,'B']
    

    如您所述,这将返回列“B”第 3 行。请记住,在 Python 中,第一个索引从 0 而不是 1 开始。这就是为什么我们将“2”用于第三行。

    希望对您有所帮助。

    【讨论】:

    • 嗨 Gustavo,谢谢,它给了我一个关于调用特定数据的好主意,但我的问题是从用户输入调用 B 列数据,即用户将从 A 列调用并获取输出作为同一行中的 B 列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多