我是 Pandas 的新手,我有一个 csv 数据文件,我正在尝试为特定列的每一行找到最大值和最小值。该数据如下所示:
0 PK,K,1,2,3,4,5
1 PK,K,1,2,3,4,5,6,7,8
2 PK,K,1,2,3,4,5,6,7,8
3 K,1,2
4 PK,K,1,2
这是我的 CSV 文件的其中一列(大约 600 行中的前 5 行)。如您所见,它在每个单元格中有多个值(这些是学校提供的成绩)。如何从这些信息中找到最小值和最大值?提前致谢
我尝试使用 dataFrame.max()/dataFrame.min(),但这给出了整行或整列的最大值/最小值。我的问题更具体到一个单元格。我也想过将每个单元格转换成一个列表,然后我可以使用 python 默认函数找到最大值/最小值,但我真的不想那样做。我想坚持使用 Pandas 和数据框
length_ = gradesOffered.shape
print(length_)
print(gradesOffered.iloc[0:5,0])
print(gradesOffered.iloc[0:5,0].max())
Output:
(660, 1)
0 PK,K,1,2,3,4,5
1 PK,K,1,2,3,4,5,6,7,8
2 PK,K,1,2,3,4,5,6,7,8
3 K,1,2
4 PK,K,1,2
Name: Grades_Offered_All, dtype: object
PK,K,1,2,3,4,5,6,7,8
我的预期输出是(在“最大”情况下):
(660, 1)
0 PK,K,1,2,3,4,5
1 PK,K,1,2,3,4,5,6,7,8
2 PK,K,1,2,3,4,5,6,7,8
3 K,1,2
4 PK,K,1,2
Name: Grades_Offered_All, dtype: object
0 5
1 8
2 8
3 2
4 2
我的预期输出是(在“最小”情况下):
(660, 1)
0 PK,K,1,2,3,4,5
1 PK,K,1,2,3,4,5,6,7,8
2 PK,K,1,2,3,4,5,6,7,8
3 K,1,2
4 PK,K,1,2
Name: Grades_Offered_All, dtype: object
0 PK
1 PK
2 PK
3 K
4 PK
您应该创建自己的函数来查找最小值/最大值,并使用 .apply 创建具有每行最小值和最大值的列。尝试根据单个单元格放置找到最小值/最大值会很麻烦。
例子:
import pandas as pd
def max_school(row):
order = ['PK', 'K', '1', '2', '3', '4', '5', '6', '7', '8']
sort = sorted(row.dropna(), key=lambda x:order.index(x))
return sort[-1]
def min_school(row):
order = ['PK', 'K', '1', '2', '3', '4', '5', '6', '7', '8']
sort = sorted(row.dropna(), key=lambda x:order.index(x))
return sort[0]
df = pd.read_csv('something.csv', dtype=str)
df['Max'] = df.apply(lambda x: max_school(x), axis=1)
df['Min'] = df.apply(lambda x: min_school(x), axis=1)
print(df)
这输出:
1 2 3 4 5 6 7 8 9 10 Max Min
0 NaN NaN NaN PK K 1 2 3 4 5 5 PK
1 PK K 1 2 3 4 5 6 7 8 8 PK
2 PK K 1 2 3 4 5 6 7 8 8 PK
3 NaN NaN NaN NaN NaN NaN NaN K 1 2 2 K
4 NaN NaN NaN NaN NaN NaN PK K 1 2 2 PK
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句