我试图通过比较列中的值与字典中的值来编辑pandas数据框中的值,然后根据字典中的值更改列中的值。这将应用于单列中的大约10,000个数据点,所以我宁愿不遍历每一行,但列中的每个值都应该根据其初始值进行更改,那么我可以做些什么来促进这一点呢?我的初始代码如下:
ctqparam = []
for index, row in df.iterrows():
val = str(row['Subtest'])
if val in ctqparam_dict.keys():
ctqparam += [ctqparam_dict[val]]
df.insert(4, column='ctqparam', value = ctqparam)
df = df.drop(columns=['Subtest'])
,其中ctqparam_dict是比较列值的字典。我创建了一个值数组,然后将其插入到df中,在此过程中删除初始列。有更好的方法吗?
如果我理解的话,试试这样做…
代码:
import pandas as pd
adict = {'one':'wasONE', 'three':'wasTHREE'}
df = pd.DataFrame({'col1':[1,2,3,4], 'Subtest':['one', 'two', 'three', 'four']})
df = df.replace({'Subtest': adict})
每个的输出将是:
{'one': 'wasONE', 'three': 'wasTHREE'}
col1 Subtest
0 1 one
1 2 two
2 3 three
3 4 four
col1 Subtest
0 1 wasONE
1 2 two
2 3 wasTHREE
3 4 four