我有以下数据帧
col1 col2
0 str9 val1
1 str8 val2
2 str4 val3
3 str2 val4
4 unknown1 asdvstr1df
5 random1 teststr2test
下面的列表
strings = ['str1', 'str2', 'str3', 'str4']
如果第二列中的字符串中的任何一点与给定的列表strings匹配,我想替换第1列中的值。你知道吗
注意:col2可以在字符串内部或在字符串的任意一端包含列表“string”的值。你知道吗
目前,我正在使用一个丑陋而缓慢的嵌套循环:
import pandas as pd
data_file = pd.DataFrame(data = ([['str9', 'val1'], ['str8', 'val2'], ['str4','val3'] , ['str2', 'val4'] , ['unknown', 'asdvstr1df'] , ['unknown', 'teststr2test']] ), columns = (['col1', 'col2']), dtype = str)
strings = ['str1', 'str2', 'str3', 'str4']
for value in range(data_file.shape[0]):
for text in strings:
if (str(data_file.col2[value]).find(text) != -1):
data_file.loc[value, 'col1'] = text
我不知道如何改进这个缓慢的过程。如何使其运行速度比当前的O(nm)时间快(n是数据文件的大小,m是称为字符串的列表的大小)?你知道吗
输出应为:
col1 col2
0 str9 val1
1 str8 val2
2 str4 val3
3 str2 val4
4 str1 asdvstr1df
5 str2 teststr2test
试试这个:
输出:
可以使用
replace
两次regex
IIUC公司
输出:
相关问题 更多 >
编程相关推荐