For循环不会在两个数据框之间打印现有的通用值

时间:2019-09-20 06:57:20

标签: python pandas loops for-loop

因此,我有两个关于星巴克饮料营养信息的数据集,即Drinks和Drinks2,每个数据集都有一组不同的饮料作为观测值。

饮料列:

events:[
           {
              "title":"Meeting2",
              "start":"2019-09-30 00:00:00",
              "end":"2019-09-30 00:00:00"
            }
        ]

饮料列2:

events:'<?php echo site_url('Calendar/load'); ?>'

在将两个数据集合并到它们共同的['Beverage', 'Calories', 'Fat (g)', 'Carb. (g)', 'Fiber (g)','Protein (g)', 'Sodium (g)'] 列上时,新数据集的['Beverage_category', 'Beverage', 'Beverage_prep', 'Calories', 'Fat (g)','Trans Fat (g)', 'Saturated Fat (g)', 'Sodium (g)', 'Carb. (g)', 'Cholesterol (mg)', 'Fiber (g)', 'Sugars (g)', 'Protein (g)','Vitamin A (% DV)', 'Vitamin C (% DV)', 'Calcium (% DV)', 'Iron (% DV)', 'Caffeine (mg)'] 列包含三个值的多次出现; Caffe Latte,Caramel Macchiato,Cappuccino,表示初始数据框中的两个“饮料”原始列中都存在这些值,并通过手动检查确认了它们的存在。

但是,当尝试使用以下for循环打印常用值时:

'Beverage'

什么都没有显示在输出上。在两个饮料列之间有共同的值,但没有打印任何内容。知道为什么吗?

2 个答案:

答案 0 :(得分:0)

获取具有共同值的列

import pandas as pd


d1 = {'Beverage': ['Beverage', 'Calories', 'Fat (g)', 'Carb. (g)', 'Fiber (g)','Protein (g)', 'Sodium (g)',]}
d2 = {'Beverage': ['Beverage_category', 'Beverage', 'Beverage_prep', 'Calories', 'Fat (g)','Trans Fat (g)',
      'Saturated Fat (g)', 'Sodium (g)', 'Carb. (g)', 'Cholesterol (mg)', 'Fiber (g)',
      'Sugars (g)', 'Protein (g)','Vitamin A (% DV)', 'Vitamin C (% DV)', 'Calcium (% DV)',
      'Iron (% DV)', 'Caffeine (mg)',]}


df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)


dx = pd.merge(df1, df2, on='Beverage', how='inner')

使代码正常工作

print([i for i in sum(d1.values(),[]) if i in sum(d2.values(), [])])

答案 1 :(得分:0)

要查找常见元素,可以改用:

BotServices

如果您想使代码正常工作,可以使用以下代码:

import numpy as np    
np.intersect1d(drinks['Beverage'], drinks2['Beverage'])

或者:

 for v in drinks2['Beverage']:
    if v in drinks['Beverage'].values:
        print(v)

或者:

for i, v in drinks2['Beverage'].iteritems():
    for j, w in drinks['Beverage'].iteritems():
        if v == w:
            print(v)