Python_Pandas-用条件填充新行

时间:2018-11-04 01:11:12

标签: python pandas dataframe

我正在尝试遍历数据框并创建另一个名为“转化”的行。 我希望仅在“货币”行为“ EUR”时填充“转化”行,如果不是欧元则跳过 确定“ EUR”货币后,我想将其乘以JPY对象,即2

当前DF如下:

Name     Currency     Amount  
a        EUR          12.00
b        USD          10.00
c        EUR           8.00
d        JPY          100.00
e        EUR          567.00

执行后,我希望成品看起来像这样:

Name     Currency     Amount  Conversions     
a        EUR          12.00      24.00
b        USD          10.00      20.00
c        EUR           8.00      16.00
d        JPY          100.00    200.00
e        EUR          567.00   1134.00

*数据在csv中。
请在下面查看我的尝试:

导入csv 将熊猫作为pd导入 将numpy导入为np

JPY = (2)

df = pd.read_csv('df.csv', delimiter=";")

for i in df.iteritems():
    if df.loc[(df['Currency'] == 'EUR')]:
        df['Conversions']= (df.to_numeric(df['Amount']*(JPY)))

Shell响应- ValueError:DataFrame的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()

预先感谢您可以提供此新手帮助。

1 个答案:

答案 0 :(得分:2)

使用np.select无需使用循环:

# your condition
conditions = [
    df['Currency'] == 'EUR'
]

# if condition is met
choices = [
    df['Amount']*2
]

# create a new column and a default value if no condition is met
# you can always change the default value to np.nan if you do not want a value
df['Conversions'] = np.select(conditions, choices, default=df['Amount'])


    Name    Currency    Amount  Conversions
0   a            EUR    12.0    24.0
1   b            USD    10.0    10.0
2   c            EUR    8.0     16.0
3   d            JPY    100.0   100.0
4   e            EUR    567.0   1134.0