【发布时间】:2021-04-28 19:32:48
【问题描述】:
我有一个如下所示的数据框 (df)(高度简化):
ID A B C VALUE
1 10 462 2241 217
2 11 498 6953 217
3 67 120 6926 654
4 68 898 7153 654
5 87 557 4996 654
6 88 227 6475 911
7 47 875 5097 911
8 48 143 8953 111
9 65 157 4470 111
10 66 525 9328 111
'VALUE' 列包含可变数量的具有相同值的行。我正在尝试输出一系列 csv 文件,其中包含所有包含 'VALUE' 长度 == 2、==3 等的行。例如:
to_csv('/Path/to/VALUE_len_2.csv')
ID A B C VALUE
1 10 462 2241 217
2 11 498 6953 217
6 88 227 6475 911
7 47 875 5097 911
to_csv('/Path/to/VALUE_len_3.csv')
ID A B C VALUE
3 67 120 6926 654
4 68 898 7153 654
5 87 557 4996 654
to_csv('/Path/to/VALUE_len_4.csv')
ID A B C VALUE
7 47 875 5097 111
8 48 143 8953 111
9 65 157 4470 111
10 66 525 9328 111
我可以一次获得一个长度值的所需输出,例如,使用:
df = pd.concat(v for _, v in df.groupby("VALUE") if len(v) == 2)
df.to_csv("/Path/to/VALUE_len_2.csv")
但是,我有几十个值要测试。我想按以下顺序将其放入 for 循环中:
mylist = [2,3,4,5,6,7,8,9] or len([2,3,4,5,6,7,8,9])
grouped = df.groupby(['VALUE'])
output = '/Path/to/VALUE_len_{}.csv'
for loop here:
if item in my list found in grouped:
output rows to csv
else:
pass
- 我尝试了各种构造来使用列表中的项目迭代 groupby 对象,但我无法使任何工作。
- 尝试以这种方式使用 groupby 对象可能会出现问题,但很可能是我无法获得正确的语法来完成迭代。
【问题讨论】:
标签: python pandas loops for-loop group-by