【问题标题】:How to use pandas to extract two values from csv at the same time? (two columns, same row)如何使用 pandas 同时从 csv 中提取两个值? (两列,同一行)
【发布时间】:2019-01-18 11:36:51
【问题描述】:

我正在使用pandas 将 csv 文件读入我的 python 代码。我知道我可以从所有行的特定列中获取特定值并将其附加到数组中,如下所示:

import pandas as pd
df = pd.read_csv('File.txt')
for row in df[df.columns[0]]:
    playerNames.append(row)

但是,我想同时从第 0 列和第 2 列中获取值来填充字典。在我的脑海里会是这样的:

for row in df[df.columns[0,2]]:
    playerNameDictionary[row.columns[0]] = row.columns[2]

显然这是错误的(甚至不认为它可以编译),但我只是不知道该怎么做。

【问题讨论】:

    标签: python pandas csv dictionary


    【解决方案1】:

    循环是 Pandas 的反模式。更高效,你可以使用pd.Series.to_dict

    key_col, val_col  = df.columns[[0, 2]]
    
    playerNameDictionary = df.set_index(key_col)[val_col].to_dict()
    

    【讨论】:

    • 这会为每一行做吗?不需要循环吗?
    • @AlekPiasecki,正确。
    【解决方案2】:
    dict_sample = dict(zip(df.column1, df.column2))
    

    column1 & column 2 代表列名。它将创建一个键值对,键是 column1 数据,值是 column2 数据。我希望我正确理解了这个问题。

    【讨论】:

      【解决方案3】:

      确保您未来的密钥不重复。 对于 Python

      my_dict ={}
      for key, value in zip(df.column0, df.column2)):
          my_dict [key] = value 
      

      对于 Python 3>

      my_dict = dict(zip(df.column0, df.column2))
      

      【讨论】:

      • 这会为每一行做吗?不需要循环吗?
      • 可以试一试
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多