假设我正在处理一个熊猫数据框,例如df
以下所示:
import pandas as pd
df = pd.DataFrame([['A',3, 2000.0],
['B',4, 4502.5],
['C',5, 6250.0]],
columns=['Product', 'Number', 'Value'])
df
Product Number Value
0 A 3 2000.0
1 B 4 4502.5
2 C 5 6250.0
我可以使用f-string
来添加列,例如:
df['Unit_value'] = [f'{x/3}' for x in df["Value"]]
df
由于只x
涉及1个变量,因此运行良好:分母x/3
为常数。我可以做一些等效的事情(使用f-string
),但是y
在分母中有一个变量,y
它Number
对应于给定的Value
吗?我想拥有的是:
Product Number Value Unit_Value
0 A 3 2000.0 666.66
1 B 4 4502.5 1125.63
2 C 5 6250.0 1250.00
哪里: 666.66=2000.0/3 , 1125.63=4502.5/4 , 1250.00=/5
我想到了类似的东西for x in df["Value"] and y in df["Number"]
并尝试使用它,但是这种语法不起作用...
您可以使用DataFrame.itertuples()
。
import pandas as pd
df = pd.DataFrame([['A',3, 2000.0],
['B',4, 4502.5],
['C',5, 6250.0]],
columns=['Product', 'Number', 'Value'])
df['Unit_value'] = [tup.Value / tup.Number for tup in df.itertuples()]
print(df)
您还可以将纯Python方法与一起使用zip
。
import pandas as pd
df = pd.DataFrame([['A',3, 2000.0],
['B',4, 4502.5],
['C',5, 6250.0]],
columns=['Product', 'Number', 'Value'])
df['Unit_value'] = [val / num for num, val in zip(df['Number'], df['Value'])]
print(df)
zip
返回的可迭代,tuple
然后可以将其解压缩为变量。
如果确实需要,可以使用f个字符串来执行此操作,但这将返回一个字符串并消除进行进一步计算的能力(或至少使其更加困难)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句