首页 > 解决方案 > 在使用熊猫的python中,我希望我的程序在csv文件的A列和B列中搜索字符串,并将结果写入C列

问题描述

import pandas as pd
path = "C:\\Users\\Desktop\\Python\\"

filename = 'file.csv'

df = pd.read_csv(path+filename)
arr = []
for i in range(len(df['Column_A'])):


    if df['Column_A'][i] == pd.np.nan:
        continue

    if df['Column_A'][i] is not pd.np.nan:
        if 'ABC' in df['Column_A'][i]:
            arr.append('X')
        elif 'DEF' in df['Column_A'][i]:
            arr.append('Y')
        elif 'GHI' in df['Column_A'][i]:
            arr.append('Z')

        else:
            arr.append('')
    else:
        arr.append(' ')
        continue

df['Column_C'] = arr

filename = 'output.csv'

df.to_csv(path+filename)

在上面的代码中,我想将 column_B 添加到搜索字符串(“ABC”、“DEF”、“GHI”)以及 column_A,以便在找到匹配项时根据需要将结果写入 column_C。

标签: pythonpandascsv

解决方案


我不清楚你的问题是否:

  • 如果 Column_A 和 Column_B 都包含“ABC”,则要添加“X ,或者
  • 如果 Column_A 包含“ABC”,则添加“X”,如果 Column_B 包含“DEF”,则添加“Y”。

在第一种情况下,Column_C 将是“X”、“Y”、“Z”、“”或“”。但是如果 Column_A 有 'ABC'Column_B 有 'DEF' 会发生什么呢?

import pandas as pd

path = "C:\\Users\\Desktop\\Python\\"

filename = 'file.csv'

df = pd.read_csv(path+filename)
arr = []

lookup = {'ABC': 'X', 'DEF': 'Y', 'GHI': 'Z'}

for col_A, col_B in zip(df['Column_A'], df['Column_B']):
    to_append = ''
    if col_A is not pd.np.nan and col_B is not pd.np.nan:
        for key in lookup.keys():
            if key in col_A and key in col_B:
                to_append = to_append + lookup[key]
    arr.append(to_append)
df['Column_C'] = arr

filename = 'output.csv'

df.to_csv(path+filename, index=False)

在第二种情况下 Column_C 将是 'XX', 'XY', ..., 'YZ','ZZ', '', ' '。

import pandas as pd
path = "C:\\Users\\Desktop\\Python\\"

filename = 'file.csv'

df = pd.read_csv(path+filename)
arr = []

lookup = {'ABC': 'X', 'DEF': 'Y', 'GHI': 'Z'}

for col_A, col_B in zip(df['Column_A'], df['Column_B']):
    to_append = ''
    if col_A is not pd.np.nan and col_B is not pd.np.nan:
        for key in lookup.keys():
            if key in col_A:
                to_append = to_append + lookup[key]
            elif key in col_B:
                to_append = to_append + lookup[key]
    arr.append(to_append)

df['Column_C'] = arr

filename = 'output.csv'

df.to_csv(path+filename, index=False)

在这两种情况下,我在编写 csv 文件时还添加了 index=False ,因为我假设您想要一个与输入文件完全相同的文件,但有一个额外的列 C 列。


推荐阅读