[英]Create column from another dataframe, using existing columns
我有一个带有“数量”和“单位”列的熊猫数据框,例如:
Quantity Unit
0 Current A
1 Current mA
2 Voltage V
3 Length m
4 Length km
我有一个带有单位比率的熊猫数据框,例如:
Current Voltage Length
A 1 NaN NaN
mA 1000 NaN NaN
V NaN 1 NaN
m NaN NaN 1000
km NaN NaN 1
是否可以在第一个数据框列中创建比率值?:
Quantity Unit Ratio
0 Current A 1
1 Current mA 1000
2 Voltage V 1
3 Length m 1
4 Length km 1000
我试图通过 iterrows 获取每个值,但我有非常大的数据框,并且它在时间的情况下无法正常工作。 也许还有另一种更方便的方法来解决我的问题,但我必须使用比率数据框。
使用to_dict
:
d = df2.to_dict('i')
df['Ratio'] = df.apply(lambda s: d[s['Unit']][s['Quantity']], axis=1)
Quantity Unit Ratio
0 Current A 1.0
1 Current mA 1000.0
2 Voltage V 1.0
3 Length m 1000.0
4 Length km 1.0
给定输入数据框
df
Current Voltage Length
A 1 NaN NaN
mA 1000 NaN NaN
V NaN 1 NaN
m NaN NaN 1000
km NaN NaN 1
然后看起来你想要一些简单的东西
df.stack()
A Current 1.0
mA Current 1000.0
V Voltage 1.0
m Length 1000.0
km Length 1.0
dtype: float64
您可以使用map
:
df.assign(Ratio = df.Unit.map(ratios.bfill(axis = 1).Current))
Quantity Unit Ratio
0 Current A 1.0
1 Current mA 1000.0
2 Voltage V 1.0
3 Length m 1000.0
4 Length km 1.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.