2024-10-01 00:24:55 发布
网友
我一直在研究一个数据集,它包含与产品相关的unigram。在dataframe中,我们有像cadbury9gm或100gmdoritos这样的unigram,所以我想删除包含像这样的名称的整行,也就是说,包含数字值,以使dataframe更干净,这样我可以进一步进行,因为我必须将产品分类为类别和子类别。有没有办法删除包含数字字符的行? 谢谢
我会这么做:
import pandas as pd import numpy as np bogus_data = { 'Name': ['Acme', 'Foo', 'Bar', 'Loren', 'Ipsum'], 'Label': ['abc', '3ds', 'cba', 'b3ewq', 'asdf'], 'Value': np.random.rand(5) } df = pd.DataFrame(bogus_data, columns=['Name', 'Label', 'Value']) df = df[~df["Label"].str.contains(r'[0-9]')] print(df)
打印此数据帧的结果是
Name Label Value 0 Acme abc 0.574412 2 Bar cba 0.354460 4 Ipsum asdf 0.047170
试试这个:
testdf Name Value 0 Name1 4409 1 Name2 SomeVal 2 Name3 26Text73 3 Name4 SomeVal2 4 Name5 2123Text 5 Name6 Text1904 6 Name7 1Text747 7 Name8 145Text7 # Add a column that validates your contains digit condition testdf['HasDigit'] = testdf['Value'].map(lambda x: True if any(i.isdigit() for i in str(x)) else False) testdf Name Value HasDigit 0 Name1 4409 True 1 Name2 SomeVal False 2 Name3 26Text73 True 3 Name4 SomeVal2 True 4 Name5 2123Text True 5 Name6 Text1904 True 6 Name7 1Text747 True 7 Name8 145Text7 True # Finally retain the ones with value False in 'HasDigit' columns testdf = testdf[testdf['HasDigit'] == False] testdf Name Value HasDigit 1 Name2 SomeVal False
稍后可以删除“HasDigit”列。你知道吗
如果您希望基于单个列中的值进行筛选,那么这将非常有效。但是,如果涉及多个列,则可以创建一个新列,该列将所考虑的所有列的字符串值串联起来。举个例子:
testdf['NewCol'] = testdf['Col1'].astype(str) + testdf['Col2'].astype(str) + ... + testdf['Coln'].astype(str)
一旦有了这个新列,就可以对它运行相同的lambda函数。你知道吗
希望这有帮助
我会这么做:
打印此数据帧的结果是
试试这个:
稍后可以删除“HasDigit”列。你知道吗
如果您希望基于单个列中的值进行筛选,那么这将非常有效。但是,如果涉及多个列,则可以创建一个新列,该列将所考虑的所有列的字符串值串联起来。举个例子:
一旦有了这个新列,就可以对它运行相同的lambda函数。你知道吗
希望这有帮助
相关问题 更多 >
编程相关推荐