从字符串列表中删除插入符号的方法?
Method to remove a caret from list of strings?
我有一个字符串列表,在某些字符串中,包含一个插入符号,后面有几个随机数。
例如:
strings = [MyString1^111,
MyString2,
MyString3,
MyString4^222,
MyString5^888]
我的程序的最终目标是删除插入符号,但之后保留数字,然后使用在“字典 DF”中找到的 AverageTime 值将字符串放入 pandas DataFrame,如果不是在“字典DF”中,使用2.91。我尝试使用替换函数,虽然它可以消除字符串列表中的插入符号,但它无法在 DataFrame 中使用。
这是“字典 DF”的样子:
dictionary = [MyString2 : 3.76,
MyString3 : 2.66]
字典中的两列是“Name_Of_String”和“AverageTime”
这是我目前的情况:
noCaret = []
for i in strings:
noCaret.append(i.replace('^', ''))
stringsDF = dictionary[dictionary.Name_Of_String.isin(noCaret)]
for i in noCaret:
if stringsDF['Name_of_String'].str.contains(i).any():
pass
else:
stringsDF.loc[(len(testDFu.Name_Of_String))-1] = [i, np.nan]
stringsDF.fillna(2.91, inplace = True)
stringsDF
stringsDF = [MyString1^111 : 2.91,
MyString2 : 3.76]
当我 运行 这样做时,我收到一个部分 DataFrame,其中 none 包含带有插入符号的字符串。我该如何解决这个问题?谢谢!
编辑:我包括了“字典 DF”、输出的字符串 DF 的样子,以及列名。
import pandas as pd
new_strings = []
strings = ['MyString1^111',
'MyString2',
'MyString3',
'MyString4^222',
'MyString5^888']
for i in strings:
new_strings.append(i.replace('^', ''))
df = pd.DataFrame(new_strings)
print(df)
输出:
0 MyString1111
1 MyString2
2 MyString3
3 MyString4222
4 MyString5888
这会产生您正在寻找的结果,我认为:一个包含 2 列的数据框,Name_of_String
和 AverageTime
,strings
中的所有项目都包括在内,那些是不在字典中 AverageTime
作为 2.91.
输入代码时要小心,您在问题中的 Name_of_String
和 Name_Of_String
之间切换,这会产生错误(如果它们应该在同一列)。此外,字典使用 {}
而不是 []
,后者不能使用 key: value
对。
import pandas as pd
strings = ['MyString1^111',
'MyString2',
'MyString3',
'MyString4^222',
'MyString5^888']
noCaret = [x.replace('^', '') for x in strings]
dictionary = {"MyString2": 3.76, "MyString3": 2.66}
stringsDF = pd.DataFrame(data={"Name_of_String": noCaret})
stringsDF["AverageTime"] = stringsDF["Name_of_String"].map(dictionary).fillna(2.91)
stringsDF
#Out:
# Name_of_String AverageTime
#0 MyString1111 2.91
#1 MyString2 3.76
#2 MyString3 2.66
#3 MyString4222 2.91
#4 MyString5888 2.91
我有一个字符串列表,在某些字符串中,包含一个插入符号,后面有几个随机数。
例如:
strings = [MyString1^111,
MyString2,
MyString3,
MyString4^222,
MyString5^888]
我的程序的最终目标是删除插入符号,但之后保留数字,然后使用在“字典 DF”中找到的 AverageTime 值将字符串放入 pandas DataFrame,如果不是在“字典DF”中,使用2.91。我尝试使用替换函数,虽然它可以消除字符串列表中的插入符号,但它无法在 DataFrame 中使用。
这是“字典 DF”的样子:
dictionary = [MyString2 : 3.76,
MyString3 : 2.66]
字典中的两列是“Name_Of_String”和“AverageTime”
这是我目前的情况:
noCaret = []
for i in strings:
noCaret.append(i.replace('^', ''))
stringsDF = dictionary[dictionary.Name_Of_String.isin(noCaret)]
for i in noCaret:
if stringsDF['Name_of_String'].str.contains(i).any():
pass
else:
stringsDF.loc[(len(testDFu.Name_Of_String))-1] = [i, np.nan]
stringsDF.fillna(2.91, inplace = True)
stringsDF
stringsDF = [MyString1^111 : 2.91,
MyString2 : 3.76]
当我 运行 这样做时,我收到一个部分 DataFrame,其中 none 包含带有插入符号的字符串。我该如何解决这个问题?谢谢!
编辑:我包括了“字典 DF”、输出的字符串 DF 的样子,以及列名。
import pandas as pd
new_strings = []
strings = ['MyString1^111',
'MyString2',
'MyString3',
'MyString4^222',
'MyString5^888']
for i in strings:
new_strings.append(i.replace('^', ''))
df = pd.DataFrame(new_strings)
print(df)
输出:
0 MyString1111
1 MyString2
2 MyString3
3 MyString4222
4 MyString5888
这会产生您正在寻找的结果,我认为:一个包含 2 列的数据框,Name_of_String
和 AverageTime
,strings
中的所有项目都包括在内,那些是不在字典中 AverageTime
作为 2.91.
输入代码时要小心,您在问题中的 Name_of_String
和 Name_Of_String
之间切换,这会产生错误(如果它们应该在同一列)。此外,字典使用 {}
而不是 []
,后者不能使用 key: value
对。
import pandas as pd
strings = ['MyString1^111',
'MyString2',
'MyString3',
'MyString4^222',
'MyString5^888']
noCaret = [x.replace('^', '') for x in strings]
dictionary = {"MyString2": 3.76, "MyString3": 2.66}
stringsDF = pd.DataFrame(data={"Name_of_String": noCaret})
stringsDF["AverageTime"] = stringsDF["Name_of_String"].map(dictionary).fillna(2.91)
stringsDF
#Out:
# Name_of_String AverageTime
#0 MyString1111 2.91
#1 MyString2 3.76
#2 MyString3 2.66
#3 MyString4222 2.91
#4 MyString5888 2.91