python - 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.
解决方案
您可以使用dictionary
withsplit
和map
function 来做到这一点
grades={'Ninety':'A', 'Eighty':'B', 'Seventy':'C', 'Sixty':'D'}
df['Letter Grade'] = df.Percentage.str.split(expand=True)[0].map(grades)
推荐阅读
- matlab - 将 polyshape 转换为一组坐标数组
- powershell - Kafka Producer 窗口不允许我添加消息
- python - 将 Matplotlib 图输出为灰度数组
- sql - 如何从 SQL 查询中删除重复行
- c# - 使用 Jquery 设置复选框值的模型验证错误
- python - Is it possible to Azimuthal equidistant projection and create a buffer polygon in Ruby
- sql - MS Access Error 3265 'item not found in this collection' when opening form in add mode
- google-app-engine - 有没有办法为 app.yaml 中的所有静态文件设置默认的 http 标头而不重复?
- 3d - Gnuplot gif 3d 板
- javascript - Fitting image to screen and allow default zoom behavior