我有一个像这样的大数据框:
data = [
[0,'His score is 15/30',15,30],
[1, 'She scored 34/50 in math', np.NaN, np.NaN],
[2,'avg score is 32.5/50 for english',32,50],
[3,'He scored last @ 15/50',25,50]
]
df = pd.DataFrame(data, columns=['id','text','num','denom'])
| id | text | num | denom |
|-----:|:---------------------------------|------:|--------:|
| 0 | His score is 15/30 | 15 | 30 |
| 1 | She scored 34/50 in math | nan | nan |
| 2 | avg score is 32.5/50 for english | 32 | 50 |
| 3 | He scored last @ 15/50 | 25 | 50 |
我想选择df.text中df.num +'/'+ df.denom的所有行
我尝试了以下代码,但它返回了一个空的DataFrame:
df.loc[df.apply(lambda row: (str(row.num)+'/' + str(row.denom)) in row.text, axis=1) ]
这样的事情行吗?
您正在尝试将转换为字符串的浮点数与字符串中的文本作为整数进行匹配。
如果您还尝试匹配浮点数,则此方法效果不佳。
df = df.fillna(0)
df= df.loc[df.apply(lambda x: (str(int(x.num))+ '/' + str(int(x.denom))) in str(x.text), axis=1)]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句