У меня есть датафрейм, похожий на этот пример. По некоторым причинам необработанные данные имеют значение, реплицированное по всему.
Node Node 1 Value Node 2 Value Node 3 Value
0 1 A B C
1 2 A B C
2 3 A B C
Я хочу преобразовать его так, чтобы это выглядело так:
Node Value
0 1 A
1 2 B
2 3 C
Этот код iterrows работает, как задумано, но это очень медленно для моих данных (48 узлов с ~ 20 000 значений).
Я чувствую, что должен быть более быстрый путь, возможно, с apply
, но я не могу понять это.
import pandas as pd
df = pd.DataFrame({"Node": ["1", "2", "3"],
"Node 1 Value": ["A","A","A"],
"Node 2 Value": ["B","B","B"],
"Node 3 Value": ["C","C","C"]})
print(df)
for index, row in df.iterrows():
df.loc[index, 'Value'] = row["Node {} Value".format(row['Node'])]
print(df[['Node','Value']])