python - 循环遍历数据框中的唯一值列表
问题描述
如何打印此数据框中的每个资产(['Asset A' 'Asset B' 'Asset C'])?我相信我的语法不正确。
import pandas as pd
df = pd.DataFrame({
'date': ['2019-01-01','2019-01-01','2019-01-01',
'2019-02-01','2019-02-01','2019-02-01',
'2019-03-01','2019-03-01','2019-03-01',
'2019-04-01','2019-04-01','2019-04-01',
'2019-05-01','2019-05-01','2019-05-01'],
'Asset': ['Asset A', 'Asset B', 'Asset C', 'Asset A', 'Asset B', 'Asset C',
'Asset A', 'Asset B', 'Asset C', 'Asset A', 'Asset B', 'Asset C',
'Asset A', 'Asset B', 'Asset C',],
'Monthly Value': [200, 800, 400, 400, 300, 600, 400, 400, 900,
300, 600, 400, 200, 100, 200],
'Indicator': [0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0]
})
print(df.sort_values(by=['Asset']))
date Asset Monthly Value Indicator
0 2019-01-01 Asset A 200 0
3 2019-02-01 Asset A 400 0
6 2019-03-01 Asset A 400 0
9 2019-04-01 Asset A 300 0
12 2019-05-01 Asset A 200 1
1 2019-01-01 Asset B 800 0
4 2019-02-01 Asset B 300 0
7 2019-03-01 Asset B 400 1
10 2019-04-01 Asset B 600 0
13 2019-05-01 Asset B 100 0
2 2019-01-01 Asset C 400 0
5 2019-02-01 Asset C 600 0
8 2019-03-01 Asset C 900 0
11 2019-04-01 Asset C 400 1
14 2019-05-01 Asset C 200 0
这个循环有问题
asset = df['Asset'].unique()
for asset in df['Asset']:
print(asset)
资产 A、B 和 C 的所需输出应如下所示。
date Asset Monthly Value Indicator
2 2019-01-01 Asset C 400 0
5 2019-02-01 Asset C 600 0
8 2019-03-01 Asset C 900 0
11 2019-04-01 Asset C 400 1
14 2019-05-01 Asset C 200 0
解决方案
而不是使用unique
你应该使用groupby
.
for _, v in df.groupby('Asset'):
print(v, end='\n\n')
date Asset Monthly Value Indicator
0 2019-01-01 Asset A 200 0
3 2019-02-01 Asset A 400 0
6 2019-03-01 Asset A 400 0
9 2019-04-01 Asset A 300 0
12 2019-05-01 Asset A 200 1
date Asset Monthly Value Indicator
1 2019-01-01 Asset B 800 0
4 2019-02-01 Asset B 300 0
7 2019-03-01 Asset B 400 1
10 2019-04-01 Asset B 600 0
13 2019-05-01 Asset B 100 0
date Asset Monthly Value Indicator
2 2019-01-01 Asset C 400 0
5 2019-02-01 Asset C 600 0
8 2019-03-01 Asset C 900 0
11 2019-04-01 Asset C 400 1
14 2019-05-01 Asset C 200 0
如果您想使用该unique
方法,那么这就是您要做的方式
asset = df['Asset'].unique()
for a in asset:
print(df[df.Asset == a], end='\n\n')
推荐阅读
- laravel - Laravel 条件 Where 子句不起作用
- python - 数组中每个元素的Python列表命名索引?
- powerbi - 为什么我可以创建这些关系?
- rust - ACCESS_VIOLATION 从 Rust 调用 Btrieve BTRCALL 函数
- reactjs - 检查用户是否在 azure AD B2C 用户流中注册或登录
- c# - 如何显示我创建的函数的结果?
- javascript - 循环认为是一个多维数组
- c# - C#获取当前登录用户在.net表单应用程序中的登录时间
- c - 将数字和字符串分成文本和数字
- java - GPU 上的 DL4J 示例不起作用(用于学校项目)