我正在处理一个数据框,其中我的一个列需要根据行中其他列提供的一组条件和数据进行更新和更改。
有问题的行是列表价格货币。
如果它之前的列(Price Book Name)包含Amer,我希望将List Price Currency更新为USD List。如果价格手册没有说Amer,我希望将货币更新为Intl USD。否则,如果Price Book名称包含GBP,我只想将其更改为UK列表,将EUR更改为Euro List。
我尝试编写一个小的for循环来浏览每个List Price Currency并根据Price Book Name所说的更新它,但它实际上并没有对列中的单元格做任何事情。
非常感谢任何帮助或指导!
for column in datagrouped['List Price Currency']:
if 'List Price Currency' == "USD":
if 'Price Book Name'.str.contains("Amer"):
'List Price Currency' == "US List"
else: 'List Price Currency' == "Intl USD"
if "List Price Currency" == "GBP":
"List Price Currency" == "UK List"
if "List Price Currency" == "EUR":
"List Pricy Currency" == "Euro List"
答案 0 :(得分:0)
如果你知道Book_Name_Price列中的所有货币,你可以使用map函数,如下所示:
import pandas as pd
# Create data frame
price_book_name = ['Amer', 'I-USD', 'GBP', 'EUR', 'EUR', 'Amer' , 'GBP', 'I-USD']
df = pd.DataFrame({'Price_Book_Name': price_book_name})
# Create an empty column by broadcasting
df['List_Price_Currency'] = ''
# Create a dictionary to map onto data frame
curr_cat = {'Amer': 'US List', 'I-USD': 'Intl USD', 'GBP': 'UK list', 'EUR': 'Euro list'}
# Map dictionary on to List_Price_Currency
df['List_Price_Currency'] = df['Price_Book_Name'].map(curr_cat)
print(df)
Price_Book_Name List_Price_Currency
0 Amer US List
1 I-USD Intl USD
2 GBP UK list
3 EUR Euro list
4 EUR Euro list
5 Amer US List
6 GBP UK list
7 I-USD Intl USD