简体   繁体   English

Python 系列的真值是给定的模棱两可的错误

[英]Python truth value of a Series is ambiguous error given

I am using the following code.我正在使用以下代码。

data_frame1 = pd.DataFrame({'Fruits': ['Appple', 'Banana', 'Mango',
                                           'Dragon Fruit', 'Musk melon', 'grapes'],
                                'Sales in kg': [20, 30, 15, 10, 50, 40]})

    # create data_frame2 by creating a dictionary
    # in which values are stored as list
    data_frame2 = pd.DataFrame({'Vegetables': ['tomato', 'Onion', 'ladies finger',
                                               'beans', 'bedroot', 'carrot'],
                                'Sales in kg': [200, 310, 115, 110, 55, 45]})

    # create data_frame3 by creating a dictionary
    # in which values are stored as list
    data_frame3 = pd.DataFrame({'Baked Items': ['Cakes', 'biscuits', 'muffins',
                                                'Rusk', 'puffs', 'cupcakes'],
                                'Sales in kg': [120, 130, 159, 310, 150, 140]})

print(data_frame1)
print(data_frame2)
print(data_frame3)

data_frame4= data_frame1['Sales in kg']/100
print(data_frame4)

def converted(df):
    if(df['Sales in kg']) == 20:
        df['Sales in kg']/2
    return data_frame1


# create a excel writer object
with pd.ExcelWriter("C:\\Users\\ppathar\\OneDrive - MORNINGSTAR INC\\Desktop\\demo.xlsx") as writer:

    # use to_excel function and specify the sheet_name and index
    # to store the dataframe in specified sheet
    data_frame1.to_excel(writer, sheet_name="Fruits", index=False)
    data_frame2.to_excel(writer, sheet_name="Vegetables", index=False)
    data_frame3.to_excel(writer, sheet_name="Baked Items", index=False)
converted(data_frame1).to_excel(writer, sheet_name="Converted items", index=False)
print("Excel printed")

I want to divide sales value in data frame 1 with 2 if it is 20. But I am getting the following error如果它是 20,我想将数据框 1 中的销售价值除以 2。但我收到以下错误

File "C:\Users\ppathar\PycharmProjects\pythonProject\venv\lib\site-packages\pandas\core\generic.py", line 1527, in __nonzero__
    raise ValueError(
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

Problem is that if expects a scalar but df['Sales in kg']) == 20 returns Series, you can try问题是, if需要一个标量但df['Sales in kg']) == 20返回系列,您可以尝试

def converted(df):
    df['Sales in kg'] = df['Sales in kg'].replace(20, 10)
    # or
    df.loc[df['Sales in kg'].eq(20), 'Sales in kg'] = df['Sales in kg'].div(2)
    # or
    df['Sales in kg'] = df['Sales in kg'].mask(df['Sales in kg'].eq(20), df['Sales in kg'].div(20))
    # or
    df['Sales in kg'] = np.where(df['Sales in kg'].eq(20), df['Sales in kg'].div(20), df['Sales in kg'])

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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