以下是我的代码和2个数据帧:
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.array([[1, 2, 3, 5, 2], [2, 2, 3, 5, 2], [3, 2, 3, 5, 2], [10, 2, 3, 5, 2]]),
columns=['ID', 'itemX_2', 'itemK_3', 'itemC_5', 'itemH_2'])
df2 = pd.DataFrame(np.array([[1,1,1, 2,2,2, 3,3,3, 10,10,10], [2,3,5, 2,3,5, 2,3,5, 2,3,5], [20,40,60, 80,100,200, 220,240,260, 500,505,520]]).T,
columns=['ID', 'Item_id', 'value_to_assign'])
基于df2,我想修改df1
预期产出:
df_expected_output = pd.DataFrame(np.array([[1, 20, 40, 60, 20], [2, 80, 100, 200, 80], [3, 220, 240, 260, 220], [10, 500, 505, 520, 500]]),
columns=['ID', 'itemX_2', 'itemK_3', 'itemC_5', 'itemH_2'])
我通过迭代列和一些操作来完成。在我的例子中,我在数据帧中得到了更多的列和行,所以速度非常慢。有人知道如何快速高效地完成吗?谢谢
另一种方法是:
_
之后的值pd.Index.map
,从df2映射这些索引的值这里有一个解决方案
pivot
df2具有类似于df1的格式,然后通过匹配最后一个“\u1”后面的数字逐列替换或者,使用字典理解第二部分:
输出:
^{}
我们可以使用
pivot
来重塑数据帧df2
,这样我们就可以很容易地使用replace
方法来替换df1
中的值相关问题 更多 >
编程相关推荐