【问题标题】:Co-occurence matrix from two data frames. Python来自两个数据帧的共现矩阵。 Python
【发布时间】:2021-04-14 15:34:37
【问题描述】:

我有两个数据框,食物和饮料。

food = {'fruit':['Apple', np.nan, 'Apple'],
        'food':['Cake', 'Bread', np.nan]} 
# Create DataFrame
food = pd.DataFrame(food)

    fruit   food
0   Apple   Cake
1   NaN     Bread
2   Apple   NaN
drink = {'smoothie':['S_Strawberry', 'S_Watermelon', np.nan],
        'tea':['T_white', np.nan, 'T_green']}
# Create DataFrame
drink = pd.DataFrame(drink)

    smoothie        tea
0   S_Strawberry    T_white
1   S_Watermelon    NaN
2   NaN             T_green

这些行代表特定客户。 我想做一个食物和饮料的共现矩阵。

预期结果:(列和 ID 不必按此顺序)

               Apple    Bread   Cake
            
S_Strawberry    1.0      NaN    1.0
S_Watermelon    NaN      1.0    NaN
T_white         1.0      NaN    1.0
T_green         1.0      NaN    NaN

到目前为止,我可以为每个 df 创建一个共现矩阵,但我不知道如何绑定两个数据框。

谢谢。

【问题讨论】:

  • 我没有得到预期的输出。 Banana 来自哪里?
  • @QuangHoang 感谢您指出,它本来是面包 :) 我已经更新了。

标签: python pandas dataframe matrix


【解决方案1】:

我想你想要pd.get_dummies 和矩阵乘法:

pd.get_dummies(drink). T @ pd.get_dummies(food)

输出:

                       fruit_Apple  food_Bread  food_Cake
smoothie_S_Strawberry            1           0          1
smoothie_S_Watermelon            0           1          0
tea_T_green                      1           0          0
tea_T_white                      1           0          1

你可以去掉前缀:

pd.get_dummies(drink, prefix='', prefix_sep=''). T @ pd.get_dummies(food, prefix='', prefix_sep='')

输出:

              Apple  Bread  Cake
S_Strawberry      1      0     1
S_Watermelon      0      1     0
T_green           1      0     0
T_white           1      0     1

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 2020-12-15
    • 1970-01-01
    • 2018-02-13
    • 2018-09-01
    • 2017-01-19
    • 2020-11-29
    • 1970-01-01
    • 2020-03-12
    相关资源
    最近更新 更多