在许多情况下,编写循环时,我发现自己需要同时通过行索引和列名对Pandas数据帧进行子集设置,但在Pandas中,我只知道使用.iloc或.loc进行子设置。分别。我的背景是R,这也许就是为什么它会不断出现。
举个例子,假设我有以下数据框:
import pandas as pd
df = pd.DataFrame({'Place':['Tiverton, RI','Newport, RI','Boston, MA','Hartford, CT','Bridgeport, CT','Providence, RI'], 'Year': [2019,2007,2019,2018,2000,2003]})
对于在“位置”列中具有“,RI”的每一行,我想在标题为“ RI”的新列中添加“是”字符串。我可以通过以下方式使用.iloc来做到这一点:
import numpy as np
df['RI'] = np.nan
for i in range(0, len(df)):
if re.search(r'\, RI', df.iloc[i,0]):
df.iloc[i,2] = 'yes'
但是,这对我来说似乎不是最佳实践,因为随着代码或数据的更改,该列索引可能会更改,然后我正在使用错误的列。在r中,我将遍历df [i,'Place']并替换为df [i,'RI']。 python / pandas中是否有任何类似的功能?我是否应该以不同的方式编写这些循环,从而完全避免这种情况?
感谢您提供任何澄清。