将文本文件中的行分组,并有条件地 select 与 python 保持一致
Group rows in text file and select conditionally which to keep with python
我有一个文件,我必须使用 Python 进行操作。
该文件包含如下条目
student_id 姓氏 DOB 性别 Class
Example of raw data
1 约翰·泰勒 2010-05-07 M ClsA
2 玛丽·奥利弗 2010-01-29 F ClsA
3 彼得·爱德华兹 2010-10-23 M ClsA
4 罗伯特·刘易斯 2010-12-02 M ClsB
5 艾米丽·克拉克 2009-12-04 F ClsB
6 杰里米·伍德 2009-08-15 M ClsB
7 威尔贝内特 2008-11-30 M ClsC
8 李健雅 2009-05-11 F ClsC
我必须创建一个新文件,我只在其中传递 classes 的所有数据,其中 class 最年长的学生是男性。
以上面的例子为例,我的新文件应该是这样的:
Example of final data
如何分组 class 然后有条件地写入新文件?
import pandas as pd
a = [['John Taylor', '2010-05-07', 'M', 'ClsA'],
['Mary Oliver', '2010-01-29', 'F', 'ClsA'],
['Peter Edwards', '2010-10-23', 'M', 'ClsA'],
['Robert Lewis', '2010-12-02', 'M', 'ClsB'],
['Emily Clark', '2009-12-04', 'F' ,'ClsB'],
['Jeremy Wood', '2009-08-15', 'M', 'ClsB'],
['Will Bennett', '2008-11-30', 'M', 'ClsC'],
['Tanya Lee', '2009-05-11', 'F', 'ClsC']]
df = pd.DataFrame(a, columns=['name', 'date', 'gender', 'cl'])
df['date'] = pd.to_datetime(df['date'])
aaa = []
for i in ['ClsA', 'ClsB', 'ClsC']:
qqq = df.loc[df['cl'] == i].sort_values(by='date', ascending=True).reset_index().values[0, 3]
if qqq == 'M':
aaa.append(i)
print((df.loc[df['cl'].isin(aaa)]).reset_index())
输出
index name date gender cl
0 3 Robert Lewis 2010-12-02 M ClsB
1 4 Emily Clark 2009-12-04 F ClsB
2 5 Jeremy Wood 2009-08-15 M ClsB
3 6 Will Bennett 2008-11-30 M ClsC
4 7 Tanya Lee 2009-05-11 F ClsC
在循环中,我检查 class 中是否有年长的男人。我在其中创建了一个必要的 classes 列表。借助which我输出了这些classes.
的所有学生
我有一个文件,我必须使用 Python 进行操作。
该文件包含如下条目
student_id 姓氏 DOB 性别 Class
Example of raw data
1 约翰·泰勒 2010-05-07 M ClsA
2 玛丽·奥利弗 2010-01-29 F ClsA
3 彼得·爱德华兹 2010-10-23 M ClsA
4 罗伯特·刘易斯 2010-12-02 M ClsB
5 艾米丽·克拉克 2009-12-04 F ClsB
6 杰里米·伍德 2009-08-15 M ClsB
7 威尔贝内特 2008-11-30 M ClsC
8 李健雅 2009-05-11 F ClsC
我必须创建一个新文件,我只在其中传递 classes 的所有数据,其中 class 最年长的学生是男性。
以上面的例子为例,我的新文件应该是这样的:
Example of final data
如何分组 class 然后有条件地写入新文件?
import pandas as pd
a = [['John Taylor', '2010-05-07', 'M', 'ClsA'],
['Mary Oliver', '2010-01-29', 'F', 'ClsA'],
['Peter Edwards', '2010-10-23', 'M', 'ClsA'],
['Robert Lewis', '2010-12-02', 'M', 'ClsB'],
['Emily Clark', '2009-12-04', 'F' ,'ClsB'],
['Jeremy Wood', '2009-08-15', 'M', 'ClsB'],
['Will Bennett', '2008-11-30', 'M', 'ClsC'],
['Tanya Lee', '2009-05-11', 'F', 'ClsC']]
df = pd.DataFrame(a, columns=['name', 'date', 'gender', 'cl'])
df['date'] = pd.to_datetime(df['date'])
aaa = []
for i in ['ClsA', 'ClsB', 'ClsC']:
qqq = df.loc[df['cl'] == i].sort_values(by='date', ascending=True).reset_index().values[0, 3]
if qqq == 'M':
aaa.append(i)
print((df.loc[df['cl'].isin(aaa)]).reset_index())
输出
index name date gender cl
0 3 Robert Lewis 2010-12-02 M ClsB
1 4 Emily Clark 2009-12-04 F ClsB
2 5 Jeremy Wood 2009-08-15 M ClsB
3 6 Will Bennett 2008-11-30 M ClsC
4 7 Tanya Lee 2009-05-11 F ClsC
在循环中,我检查 class 中是否有年长的男人。我在其中创建了一个必要的 classes 列表。借助which我输出了这些classes.
的所有学生