Пример набора данных:
kdf = ks.DataFrame({"power_1": [50, 100, 150, 120, 18],
"power_2": [50, 150, 150, 120, 18],
"power_3": [60, 100, 150, 120, 18],
"power_4": [150, 90, 150, 120, 18],
"power_30": [50, 60, 150, 120, 18]
})
df = pd.DataFrame({"power_1": [50, 100, 150, 120, 18],
"power_2": [50, 150, 150, 120, 18],
"power_3": [60, 100, 150, 120, 18],
"power_4": [150, 90, 150, 120, 18],
"power_30": [50, 60, 150, 120, 18]
})
Я знаю, как это сделать в pandas. Ниже приведены мои коды:
cols = df.filter(regex='power_').columns
for col in cols:
df[col] = pd.to_numeric(df[col],errors='coerce')
df[col+'_Status']= ['OFF' if x<100 or np.isnan(x) else 'ON' for x in df[col]]
Я могу создавать новые столбцы один за другим в Коалах, используя:
kdf = kdf.assign(power_1_Status=(kdf['power_1'].gt(100)).astype(int).map({0:'OFF',1:'ON'}))
Но я не знаю, как это сделать для всех силовых столбцов потому что мой набор данных действительно большой с 50+ столбцами мощности и 1000+ другими столбцами. Я использую Databricks. Я не хочу писать более 50 строк кода для всех столбцов мощности. Моя проблема здесь в том, что я не знаю, как динамически добавить «_Status» к моему исходному имени столбца «power_1» для l oop в Коалах. Я пытался для l oop, используя аналогичную pandas структуру. Вот что я попробовал, но не получилось.
for col in cols:
kdf = kdf.assign(col+'Status'=(kdf[col].gt(100)).astype(int).map({0:'OFF',1:'ON'}))
Спасибо