python - 使用 pandas 键入预期的特定输出
问题描述
我使用下面的代码为多种类型计算了 changbtwread 列。
for v in df['Type'].unique():
df[f'Changebetweenreadings_{v}'] = df.loc[df['Type'].eq(v), 'Last'].diff()
给定
Type Last changbtwread_ada changbtwread_btc changbtwread_eur
0 ada 3071.56 NaN NaN NaN
1 ada 3097.82 26.26 NaN NaN
2 btc 1000.00 NaN NaN NaN
3 ada 2000.00 -1097.82 NaN NaN
4 btc 3000.00 NaN 2000.0 NaN
5 eur 1000.00 NaN NaN NaN
6 eur 1500.00 NaN NaN 500.0
现在我需要根据这些 changebtw 列计算方向列。
我的输出应该看起来像
Type change_dir_ada change_dir_btc change_dir_eur
ada Nut
ada Pos
btc Nut
ada Neg
btc Nut
eur
eur Pos
我尝试的快速修复是使用此代码。
df.loc[df.Changebetweenreadings_btceur > 0, 'ChangeDirection_btceur'] = 'Pos'
df.loc[df.Changebetweenreadings_btceur < 0, 'ChangeDirection_btceur'] = 'Neg'
df.loc[df.Changebetweenreadings_btceur == 0, 'ChangeDirection_btceur'] = 'Nut'
df.loc[df.Changebetweenreadings_adabtc > 0, 'ChangeDirection_adabtc'] = 'Pos'
df.loc[df.Changebetweenreadings_adabtc < 0, 'ChangeDirection_adabtc'] = 'Neg'
df.loc[df.Changebetweenreadings_adabtc == 0, 'ChangeDirection_adabtc'] = 'Nut'
但我这是很多代码,我认为它不是一种动态的做事方式。我期待这样的事情。
for v in df['Type'].unique():
df[f'Changebetweenreadings_{v}'] #--> Do this calculation above.
它不适用于这些值
change type dir_ada dir_btc
-3637.31 ada
-4E-08 ada Neg
-3637.31 ada Nut
3637.8 btc Nut
代替 Pos 它提供随机映射。
解决方案
我相信你需要:
vals = ['Pos','Neg', 'Nut']
for v in df['Type'].unique():
df[f'change_dir_{v}'] = df.loc[df['Type'].eq(v), 'Last'].diff()
df[f'change_dir_{v}'] = np.select([df[f'change_dir_{v}'] > 0,
df[f'change_dir_{v}'] < 0,
df[f'change_dir_{v}']== 0], vals, '')
print (df)
Type Last change_dir_ada change_dir_btc change_dir_eur
0 ada 3071.56
1 ada 3097.80 Pos
2 btc 1000.00
3 ada 2000.00 Neg
4 btc 3000.00 Pos
5 eur 1000.00
6 eur 1500.00 Pos
推荐阅读
- git - 以 depth=1 克隆 repo 时获取最新标签 `git describe --tags'
- java - 如何在 Quarkus 中使用 spring-jdbc?
- kubernetes - GKE RBAC 提供对命名空间的无限制访问
- curl - 在 Artifactory Query Language 中使用 $eq 和区分大小写
- c# - Xamarin.Forms CollectionView Infinity Scroll 在一段时间后冻结
- c++ - 使用链表堆叠。结构字段与结构的类型相同
- java - 如何解决这个 Hibernate JPA 查询?
- time - 提前期的 Power BI 图表类型
- android - Android数据绑定MockK:每个{}块内都缺少调用
- r - 返回仅出现一次的列中的值