当我尝试在空白值上使用str.mtach时,它只是忽略了空白。
在我使用If语句之前,我想看看能否得到一些帮助来解决这个问题。
df={'Original Litigation':['yes','','','',"No"]}
df=pd.DataFrame(df)
df["Suit Filed (Y/N)"]=""
df["Suit Filed (Y/N)"][df["Original Litigation"].str.match("Yes|Y|represented|Open|Closed",case=False)]='Yes'
df["Suit Filed (Y/N)"][df["Original Litigation"].str.match("N|No|''",case=False)]='No'
我确实找到了一种使用if else语句获得我想要的东西的方法。然而问题是我仍然需要返回,并查看映射到“否”的所有值。如果我能够完成上述工作,我只需要过滤空白以查看str.match中需要添加的值。
答案 0 :(得分:2)
您可以使用正则表达式模式var values = [500, 0, 4000, 1000];
values
.sort((a, b) => a - b)
.forEach(a => {
var x = Math.log2((a || 250) / 500);
console.log((x + 2) + '_' + a);
});
(字符串开头后跟字符串结尾)
匹配空字符串:
^$
或者,您可以使用mask = df["Original Litigation"].str.match("N|^$", case=False)
df.loc[mask, "Suit Filed (Y/N)"]='No'
来衡量字符串的长度:
str.len
例如,
s = df["Original Litigation"]
mask = s.str.match("N", case=False) | (s.str.len() == 0)
请注意,正则表达式模式In [311]: s = pd.Series(['a','','c'])
In [312]: s.str.match('a|^$')
Out[312]:
0 True
1 True
2 False
dtype: bool
将匹配以N|No
开头或以N
开头的所有内容。由于No
以No
开头,因此模式N
相当于N|No
- N
不是必需的。同样,No
可以缩减为Yes|Y|represented|Open|Closed
。
顺便提一下,注意
中有两组括号(Y|represented|Open|Closed
)
[...][...]
这称为链式索引,在Pandas中进行分配时应该避免使用,因为在某些情况下such an assignment may fail to modify df
。
在Pandas中对此进行编码的正确方法是使用df["Suit Filed (Y/N)"][...] = 'No'
:
loc