在数据框中过滤项目迭代(使用FOR或任何其他)? [英] Filter item iteration in dataframe (with FOR or any other)?
问题描述
我有以下数据框:
d = pd.DataFrame([['A', 1989, 100],
['A', 1990, 200],
['A', 2017, 100],
['B', 1989, 500],
['B', 1990, 200],
['C', 1990, 200],
['C', 19870, 400]],
columns=['Univers', 'year', 'amount'])
Univer year amount
0 A 1989 100
1 A 1990 200
2 A 2017 100
3 B 1989 500
4 B 1990 200
5 C 1990 200
6 C 19870 400
.
.
.
我想通过 Univer
。我仅申请A d2 = d [d ['Univers'] =='A']
:
I would like to perform a filter by Univer
. I applied only for A d2 = d[d['Univers']=='A']
:
Univers year amount
0 A 1989 100
1 A 1990 200
2 A 2017 100
现在,假设我在 Univers
<中有一千个项目/ strong>列(及其在数据框中的相应位置),如何使用<$ c为 Univers
中的其余项目执行此操作$ c> FOR (或任何其他)?
Now, imagine I have a thousand of items in Univers
column (and their corresponding ítems in the dataframe), how can I do this for the remaining items in Univers
using a FOR
(or any other)?
推荐答案
选项1
在 Univers
上执行 groupby
,因为您需要保存每个组。
Option 1
Perform a groupby
on Univers
, since you need to save each group.
for i, g in df.groupby('Univers'):
g.to_csv('{}.csv'.format(i))
这会生成3个文件 -
This generates 3 files -
A.csv
Univers year amount
0 A 1989 100
1 A 1990 200
2 A 2017 100
B.csv
Univers year amount
3 B 1989 500
4 B 1990 200
C.csv
Univers year amount
5 C 1990 200
6 C 19870 400
< hr>
选项2
另一种选择是调用 pd.Series.unique
然后按此条件过滤 -
Option 2
Another alternative would be to call pd.Series.unique
and then filter on this condition -
for v in df.Univers.unique():
df[df.Univers == v].to_csv('{}.csv'.format(i))
同样的事情。您还可以使用查询
/ eval
来执行过滤。
Which does the same thing. You can also use query
/eval
to perform filtering.
这篇关于在数据框中过滤项目迭代(使用FOR或任何其他)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!