python - 在使用熊猫的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。
解决方案
我不清楚你的问题是否:
- 如果 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 列。
推荐阅读
- python - 带指针的回调函数
- php - 在 DirectoryIterator 上使用 usort 后,方法调用似乎不再起作用
- r - 通过在批处理文件中获取 R 脚本使其可执行
- reactjs - 反应 nginx 后面的 serviceworker.js 相对路径
- sql - 在 Oracle DB 上查找排名靠前的行的有效方法
- java - 检查两个日期之间
- php - 如何构建每个用户有 50 个变量的 MySQL 数据库?
- django - 在多对多领域中挣扎
- sql-server-2014 - 使用 VSCode 执行时出现连接字符串问题
- json - 使用 ng-repeat 或 ngFor 将 JSON 对象中的每个对象显示为单独的列表项