首页 > 解决方案 > 循环所有列以获取任何列中的值

问题描述

我正在尝试遍历数据框中的所有列以查找满足“特征”条件的位置以更改特征值。因此,如果我的数据框(df)如下所示:

Feature    FeatureValue    Feature2    Feature2Value
    Cat               1         Dog                3
    Fish              2         Cat                1

我想找到 Feature=Cat 或 Feature2=Cat 的位置,并将 FeatureValue 和 Feature2Value 更改为 20。我尝试了以下方法来开始,但我很挣扎。

for column in df:
    if df.loc[df[column] == "Cat"]:
print(column)

解决方案如下所示:

Feature    FeatureValue    Feature2    Feature2Value
    Cat              20         Dog                3
    Fish              2         Cat               20

标签: pythonpandas

解决方案


这是一种方法:

# First we construct a dictionary linking each feature to its value column
feature_value = {'Feature' : 'FeatureValue', 'Feature2' : 'Feature2Value'}

# We iterate over each feature column
for feature in feature_value:
    df.loc[df[feature]=='Cat', feature_value[feature]] = 20

推荐阅读