如何通过字符串变量迭代读取Pandas Dataframe列信息



我有一个Pandas DataFrame,它有列'Var_1_Access''Var_2_Access',。。。'Var_N_Access',并且在这些列之间还有我想要查找的其他信息/列。例如:

data = pd.read_csv('File')
df = pd.Dataframe(data)
print(df.columns)

Index = (['Var_1', 'Var_1_Access', 'Var_1_comp1', 'Var_1_comp2', 'Var_2', 'Var_2_Access', 'Var_2_comp1', 'Var_2_comp2'], dtype='object')

我想写一个for循环,它穿过N的范围,将'Var_1_Access'拉到'Var_N_Access'

我试过:

Access_Matrix = []
for i in range(1, N + 1):
Access_Matrix.append(df.f"Var_%i_Access" % i)
Access_Matrix = []
for i in range(1, N + 1):
Access_Matrix.append(df.Var_{i}_Access)
Access_Matrix = []
for i in range(1, N + 1):
Access_Matrix.append(df.Var_[i]_Access)

这些都会导致错误。是的,可以只写它们,因为N很小,但N会变大,我真的不想单独键入每个变量名,而是对其进行索引。最终目标是读取N个变量的Pandas数据帧信息,并使Access_Matrix的形状为[len(Var_N_Access), N]。此外,稍后可能需要在这些特定变量名之间添加更多信息,因此我希望通过字符串变量名与列索引对其进行索引,并寻找模式。

如果有必要,我可以提供更多信息,但我认为这涵盖了必要的信息。

您将无法使用"."符号,但您应该能够在带有"f"字符串的方括号中执行此操作。

for i in range(1, N + 1):
Access_Matrix.append(df[f"Var_{i}_Access"])

或者,也许更好的方法是建立一个列名列表,并从df一次性将它们提取到一个新的数据帧中,例如:

cols = [f"Var_{i}_Access" for i in range(1, N+1)]
all_cols = df[cols]

使用熊猫。DataFrame.filter

它将使用正则表达式过滤列,并生成过滤版本

access_df = df.filter(regex=f'Var_d_Access')

对于N的特定值或直到某个范围,

access_df = df.filter(regex=f'Var_[1-{N}]_Access')

这种方法比使用粗环要有效得多。

最新更新