我有一个数据帧,看起来有点像这个例子。由于某些原因,原始数据具有跨多个数据库复制的值
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个节点,约20000个值)来说速度非常慢
我觉得必须有一个更快的方法,也许有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']])
使用^{} 然后使用^{} :
编辑:如果缺少某些值,您可以通过^{} 为具有默认值的字典提取这些值,例如
np.nan
,并在lookup
之前添加到数据帧:关于definition of lookup的另一个想法是:
和^{} 的解决方案:
相关问题 更多 >
编程相关推荐