如何在pandas中更有效地将多列数据框转换为三列数据框?



这个函数完成了任务,但是速度很慢。我相信你能想到一个更有效的方法,也许用一些内置的pandas函数?

def getUtilizationForDatabase(self, df):
result = pd.DataFrame(columns={"Wertstrom", "MaGr", "Auslastung"})
for i in range(len(df)):
for f in range(1, len(df.columns)):
entry = pd.DataFrame({"Wertstrom": df.loc[i, "Wertstrom"], "MaGr": df.columns[f], "Auslastung": df.iloc[i, f]}, index=[0])
result = pd.concat([result, entry], ignore_index=True, sort=True)
return result

输入:

<表类>WertstromM100M200M300…tbody><<tr>12.51.23.3…22.52.23.1…

您可以使用melt:

df.melt(d_vars=["Wertstrom"], 
var_name="MaGr", 
value_name="Auslastung")

在旧版本的pandas(<0.20):

pd.melt(df, id_vars=["Wertstrom"], 
var_name="MaGr", 
value_name="Auslastung")

https://pandas.pydata.org/docs/reference/api/pandas.melt.html

df.melt(d_vars=["Wertstrom"], 
var_name="MaGr", 
value_name="Auslastung")

最新更新