首页 > 解决方案 > Pandas 查找子字符串,然后写入另一个

问题描述

所以我试图在我的 csv 文件的特定列中查找部分字符串。如果满足某个条件,它将在不同的列中写入其他内容。

例如:

Letter Grade     Percentage
     A        Ninety Five Percent
     C        Seventy Three Percent
     B        Eighty Two Percent

“百分比”列的格式总是相同的“百分之九十五”,即单词中的数字 + 百分比。

我希望能够打开一个csv文件,让python解析第一个单词的百分比列,如果它包含“九十”,那么它将在字母等级列中分配“A”,如果它包含“八十”那么B在字母等级等等等等。

这是我当前的代码:

import pandas as pd

df = pd.DataFrame(pd.read_csv(r'file.csv', dtype=str))

A = 'Ninety'
B = 'Eighty'
C = 'Seventy'
D = 'Sixty'

if df[df['Percentage'].isin(A)]:
     df['Letter Grade'] = df['Letter Grade'].str.replace['', 'A', regex=False]
elif df[df['Percentage'].isin(B)]:
     df['Letter Grade'] = df['Letter Grade'].str.replace['', 'B', regex=False]
elif df[df['Percentage'].isin(C)]:
     df['Letter Grade'] = df['Letter Grade'].str.replace['', 'C', regex=False]
elif df[df['Percentage'].isin(D)]:
     df['Letter Grade'] = df['Letter Grade'].str.replace['', 'D', regex=False]
else:
     df['Letter Grade'] = df['Letter Grade'].str.replace['', 'F', regex=False]


df.to_csv(r'file.csv', index=False)

它目前给我这个错误:The truth value of a DataFrame is ambiguous.

标签: pythonpandasdataframe

解决方案


您可以使用dictionarywithsplitmapfunction 来做到这一点

grades={'Ninety':'A', 'Eighty':'B', 'Seventy':'C', 'Sixty':'D'}

df['Letter Grade'] = df.Percentage.str.split(expand=True)[0].map(grades)

推荐阅读