pandas 使用列中的字符串关键字从csv文件中提取值,并将值分配给另一个csv文件

hfyxw5xn  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(110)

我是一个初学者在学习python.我做的数据操作的csv使用pandas.我在两个csv文件. Extract.csv作为工作文件和Masterlist.csv作为字典.我应该使用的关键字是字符串从描述列在Extract. csv.我有关键字列在Masterlist.csv和我必须拉相应的值,并分配给其他列命名为“帐户”,“联系人姓名”和“备注”使用这些关键字。
下面是我尝试过的代码:

file2 = open('Masterlist.csv','r')
data2 = pd.read_csv(file2)
df2 = pd.DataFrame(data2)
content=()
for rows in range(len(content)):
          if df2['Keywords'].isin(df['Description']):
              df['Accounts'] = df2['Accounts']
              df['Contact Name'] = df2['Vendor Name']
              df['Notes'] = df2['Notes']
              print()

and

file2= open('Masterlist.csv','r')
data2= pd.read_csv(file2, usecols= ['Keyterms','Accounts','Vendor Name'])
df2= pd.DataFrame(data2)
content=()
for rows in range(len(content)):
          if df[Description'].str.contains(content[df2['Keywords']]):
              df['Accounts'] = content[(df2['Accounts'])]
              df['Contact Name'] = content[(df2['Vendor Name'])]
              df['Notes'] = content[(df2['Notes'])]
              print()

两个代码都可以处理,但值显示为空白。

67up9zun

67up9zun1#

你的代码有几处错误。

content=()
for rows in range(len(content)):

这个循环不会运行。你定义了一个空的元组。然后你试图迭代一个循环,迭代次数等于元组的大小(因为它是空的,所以是零)。这就是为什么你的代码运行,你没有得到任何输出。
你想要的是这样的(未测试):

import pandas as pd

# Sample dataframes
df1 = pd.DataFrame({'Description':['This John','This Perry','This Tom']})
df2 = pd.DataFrame({'Keyword':['John','Perry','Tom'], 'Accounts':[1,5,10], 'Notes':['John is cool','Perry is also cool','Tom isnt cool']})

col_dict = {}
for col in df2.columns[1:]:
    col_dict[col] = dict(zip(df2.Keyword, df2[col]))
    df1[col] = df1.Description.apply(lambda x: pd.np.nan)
    for i in df2.Keyword:
        df1.loc[df1.Description.str.contains(i), col] = col_dict[col][i]
df1

df 1看起来像这样:|说明|账户|注意事项||-|-|-||这个约翰|1.0|约翰很酷||这个佩里|5.0|佩里也很酷||这个汤姆|10.0|汤姆不酷|

相关问题