我正在尝试将值从一个df填充到另一个df。
Df1看起来是这样的,具有形状(52,2):
Providing 1st 5 rows of df1:
id months
71911200001 22
71911200002 27
71911200004 30
71911200003 23
41911200003 35
Df2看起来是这样的形状(52,49):
Providing 1st 5 rows and columns of df2:
id M0 M1 M2 M3 M4.....M49
71911200001 0 0 0 0 0 0
71911200002 0 0 0 0 0 0
71911200004 0 0 0 0 0 0
71911200003 0 0 0 0 0 0
41911200003 0 0 0 0 0 0
Note: id is set as row index for this df.
现在我想以如下方式填充Df2:
id M0 M1....M22 M23...M27...M30...M35..M49
71911200001 0 0 1 0 0 0 0 0
71911200002 0 0 0 0 1 0 0 0
71911200004 0 0 0 0 0 1 0 0
71911200003 0 0 0 1 0 0 0 0
41911200003 0 0 0 0 0 0 1 0
The ids are the same on both the dfs.
基本上,对于df2中的每个id,我想填充“1”,只要df2中列名的数字部分与df1中的月份列中的值相匹配。
注意:所有ID都是唯一的,没有重复。
在上述任何帮助将不胜感激。
4条答案
按热度按时间hc2pp10m1#
你真的需要df2吗?我觉得你可以在categorical column上使用
pd.get_dummies
从df1
构造df2
。试试这个:df2
现在是一个热编码的DataFrame。从M0到M49的每个类别都被表示。nhhxz33t2#
我认为你需要做的就是修改你的
df2
的列,这些列来自df1
months
列:将从
df1[months]
获得的get_dummies
中的值分配给这些列ndasle7k3#
编码
查看
检查
out.loc[:, 'M22':'M27']
wmvff8tz4#
你可以通过迭代df1的行并根据id和months值更新df2的相应行来实现这一点,试试这个: