Python_Pandas - 用条件填充新行
Python_Pandas - Populating new row with condition
我正在尝试遍历我的 Dataframe 并创建另一个名为 'Conversions' 的行。
我希望 "Conversions" 行仅在 "Currency" 行为 "EUR" 时填充,如果不是 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
将 pandas 导入为 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()
在此先感谢您为这个新人提供的任何帮助。
使用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
我正在尝试遍历我的 Dataframe 并创建另一个名为 'Conversions' 的行。 我希望 "Conversions" 行仅在 "Currency" 行为 "EUR" 时填充,如果不是 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 将 pandas 导入为 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()
在此先感谢您为这个新人提供的任何帮助。
使用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