【发布时间】:2021-05-23 19:50:31
【问题描述】:
考虑我有数据框:
data = [[11, 10, 13], [16, 15, 45], [35, 14,9]]
df = pd.DataFrame(data, columns = ['A', 'B', 'C'])
df
数据如下:
A B C
0 11 10 13
1 16 15 45
2 35 14 9
真实数据由一百列和一千行组成。
我有一个函数,该函数的目的是计算有多少值高于另一列的最小值。函数如下所示:
def get_count_higher_than_min(df, column_name_string, df_col_based):
seriesObj = df.apply(lambda x: True if x[column_name_string] > df_col_based.min(skipna=True) else False, axis=1)
numOfRows = len(seriesObj[seriesObj == True].index)
return numOfRows
函数的示例输出如下:
get_count_higher_than_min(df, 'A', df['B'])
输出为3。那是因为df['B']的最小值是10,而df['A']的三个值都高于10,所以输出是3。
问题是我想使用该函数计算所有列的成对
我不知道解决此问题的有效方法是什么。我希望以类似于混淆矩阵或类似于相关矩阵的形式输出。
示例输出:
A B C
A X 3 X
B X X X
C X X X
【问题讨论】:
-
相等的情况下怎么办?数据总是整数吗?
-
您能否发布完整的输出,因为验证答案是否正确很重要
标签: python pandas numpy matrix