繁体   English   中英

根据与其他列名称匹配的列值填充 Pandas 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM