我有以下代码,其中包括大小写可变的列表。我想使用case = False将Pandas代码设置为忽略大小写,但是我的代码触发了以下错误:
TypeError:isin()得到了意外的关键字参数'case'
import pandas as pd
simple_upstream_types = ("Single rate",
"Single rate 2",
)
raw_df_simple = raw_df.loc[raw_df['upstream_rate_type'].isin([simple_upstream_types], case=False)]
能帮忙吗
答案 0 :(得分:0)
您可以使用str.contains
来接受标志,并将simple_upstream_types
转换为正则表达式:
import re
raw_df_simple = raw_df[raw_df['upstream_rate_type'].str.contains('|'.join(simple_upstream_types), flags=re.IGNORECASE)]
答案 1 :(得分:0)
我最终将pandas列的格式设置为小写,这对我的小写列表很有效。
答案 2 :(得分:0)
这是另一种方式。使用numpy
where
,创建一个用于比较类型列表和列值的新列(小写)。然后在新列中说明是matches
还是unmatched
。在下面看到样机:
import pandas
import numpy as np
df = pd.DataFrame({'UpstreamTypes': ["single rate","Single ratE","Single Rate","Single rate 2"]})
simple_upstream_types = ["Single rate","Single rate 2"]
df['Status'] = np.where(df.UpstreamTypes.str.lower().isin([v.lower() for v in list_of_values]),'Matched', 'Unmatched')
df
以下结果:
UpstreamTypes Status
0 single rate Matched
1 Single ratE Matched
2 Single Rate Matched
3 Single rate 2 Matched