根据与其他列名匹配的列值填充Pandas数据框

时间:2020-08-14 19:37:16

标签: python pandas numpy

我想根据另一数据框(df2)中一列内df2匹配值的列名填充一个数据框(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。 / p>

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您可以在此处进行numpy广播:

XlsxWriter is not installed!!
Collecting XlsxWriter
  Downloading https://files.pythonhosted.org/packages/2b/98/17875723b6814fc4d0fc03f0997ee00de2dbd78cf195e2ec3f2c9c789d40/XlsxWriter-1.3.3-py2.py3-none-any.whl (144kB)
     |████████████████████████████████| 153kB 9.4MB/s
Installing collected packages: XlsxWriter
Successfully installed XlsxWriter-1.3.3
10 Urls Found
Parsing Excel Sheet   :  0GdpGrowthRate
Parsing Excel Sheet   :  1WindPowerPotential
Parsing Excel Sheet   :  2ListOfDistrictsInIndia
Parsing Excel Sheet   :  3ListOfIndianPeopleByNetWorth
Parsing Excel Sheet   :  4StatesAndUnionTerritoriesOfIn
Parsing Excel Sheet   :  5ListOfGovernorsGeneralOfIndia
Parsing Excel Sheet   :  6ListOfIndianIndependenceActiv
Parsing Excel Sheet   :  7ListOfIndianGrammyAwardWinner
Parsing Excel Sheet   :  8ListOfIndianAcademyAwardWinne
Parsing Excel Sheet   :  9ListOfHighestGrossingIndianFi

或使用df2[:] = (df1['data'].values[:,None] == df2.columns.values).astype(int)

get_dummies

输出:

df2[:] = pd.get_dummies(df1['data']).reindex(df2.columns, axis=1)