![](/img/trans.png)
[英]Pandas populate new dataframe column based on matching columns in another dataframe
[英]Populate Pandas Dataframe Based on Column Values Matching Other Column Names
我想根据另一个 dataframe (df2) 中的一列中 df2 匹配值的列名填充一个 dataframe (df2)。 这是一个简化的示例:
names = list('abcd')
data = list('aadc')
df1 = pd.DataFrame(data,columns=['data'])
df2 = pd.DataFrame(np.empty([4,4]),columns=names)
df1:
data
0 a
1 a
2 d
3 c
df2:
a b c d
0 0.00 0.00 0.00 0.00
1 0.00 0.00 0.00 0.00
2 0.00 0.00 0.00 0.00
3 0.00 0.00 0.00 0.00
我想更新 df2 以便第一行在 a 列下返回一个数字(现在假设为 1),其他列返回 0。 df2 的第二行将返回相同的值,第三行将为 a/b/c 列返回 0,为 d 列返回 1,第四行将为 a/b/d 列返回 0,为 c 列返回 1。
非常感谢您的帮助!
你可以在这里做 numpy 广播:
df2[:] = (df1['data'].values[:,None] == df2.columns.values).astype(int)
或使用get_dummies
:
df2[:] = pd.get_dummies(df1['data']).reindex(df2.columns, axis=1)
Output:
a b c d
0 1 0 0 0
1 1 0 0 0
2 0 0 0 1
3 0 0 1 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.