按行提取不同索引列的数据帧值

2024-10-01 02:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,有1000000行和00列。你知道吗

   0       1          2         3         4         5         6          ...
0  2.645751  2.828427  3.000000  3.000000  3.000000  3.000000  3.000000   
1  2.645751  2.828427  2.828427  3.000000  3.000000  3.000000  3.000000   
2  2.449490  2.449490  2.645751  2.645751  2.645751  2.645751  2.645751   
3  2.000000  2.236068  2.449490  2.449490  2.449490  2.449490  2.449490   
4  2.449490  2.828427  2.828427  2.828427  2.828427  2.828427  2.828427   
5  1.414214  1.414214  1.414214  1.414214  1.414214  1.414214  1.732051

可复制示例(将其转换为df):

df={0: {0: 2.6457513110645907, 1: 2.6457513110645907},
 1: {0: 2.8284271247461903, 1: 2.8284271247461903},
 2: {0: 3.0, 1: 2.8284271247461903},
 3: {0: 3.0, 1: 3.0},
 4: {0: 3.0, 1: 3.0},
 5: {0: 3.0, 1: 3.0},
 6: {0: 3.0, 1: 3.0},
 7: {0: 3.0, 1: 3.0},
 8: {0: 3.0, 1: 3.0},
 9: {0: 3.0, 1: 3.0},
 10: {0: 3.0, 1: 3.0},
 11: {0: 3.0, 1: 3.0},
 12: {0: 3.0, 1: 3.0},
 13: {0: 3.0, 1: 3.0},
 14: {0: 3.0, 1: 3.0},
 15: {0: 3.0, 1: 3.0},
 16: {0: 3.0, 1: 3.0},
 17: {0: 3.1622776601683795, 1: 3.0},
 18: {0: 3.1622776601683795, 1: 3.0},
 19: {0: 3.1622776601683795, 1: 3.0},
 20: {0: 3.1622776601683795, 1: 3.0},
 21: {0: 3.1622776601683795, 1: 3.0},
 22: {0: 3.1622776601683795, 1: 3.0},
 23: {0: 3.1622776601683795, 1: 3.0},
 24: {0: 3.1622776601683795, 1: 3.0},
 25: {0: 3.1622776601683795, 1: 3.0},
 26: {0: 3.1622776601683795, 1: 3.1622776601683795},
 27: {0: 3.1622776601683795, 1: 3.1622776601683795},
 28: {0: 3.1622776601683795, 1: 3.1622776601683795},
 29: {0: 3.1622776601683795, 1: 3.1622776601683795},
 30: {0: 3.1622776601683795, 1: 3.1622776601683795},
 31: {0: 3.1622776601683795, 1: 3.1622776601683795},
 32: {0: 3.1622776601683795, 1: 3.1622776601683795},
 33: {0: 3.1622776601683795, 1: 3.3166247903554},
 34: {0: 3.1622776601683795, 1: 3.3166247903554},
 35: {0: 3.1622776601683795, 1: 3.3166247903554},
 36: {0: 3.3166247903554, 1: 3.3166247903554},
 37: {0: 3.3166247903554, 1: 3.3166247903554},
 38: {0: 3.3166247903554, 1: 3.3166247903554},
 39: {0: 3.3166247903554, 1: 3.3166247903554},
 40: {0: 3.3166247903554, 1: 3.3166247903554},
 41: {0: 3.3166247903554, 1: 3.3166247903554},
 42: {0: 3.3166247903554, 1: 3.3166247903554},
 43: {0: 3.3166247903554, 1: 3.3166247903554},
 44: {0: 3.3166247903554, 1: 3.3166247903554},
 45: {0: 3.3166247903554, 1: 3.3166247903554},
 46: {0: 3.3166247903554, 1: 3.3166247903554},
 47: {0: 3.3166247903554, 1: 3.3166247903554},
 48: {0: 3.3166247903554, 1: 3.3166247903554},
 49: {0: 3.3166247903554, 1: 3.3166247903554},
 50: {0: 3.3166247903554, 1: 3.3166247903554},
 51: {0: 3.3166247903554, 1: 3.3166247903554},
 52: {0: 3.3166247903554, 1: 3.3166247903554},
 53: {0: 3.3166247903554, 1: 3.3166247903554},
 54: {0: 3.3166247903554, 1: 3.3166247903554},
 55: {0: 3.3166247903554, 1: 3.3166247903554},
 56: {0: 3.3166247903554, 1: 3.3166247903554},
 57: {0: 3.3166247903554, 1: 3.3166247903554},
 58: {0: 3.3166247903554, 1: 3.3166247903554},
 59: {0: 3.3166247903554, 1: 3.3166247903554},
 60: {0: 3.3166247903554, 1: 3.3166247903554},
 61: {0: 3.3166247903554, 1: 3.3166247903554},
 62: {0: 3.3166247903554, 1: 3.3166247903554},
 63: {0: 3.3166247903554, 1: 3.3166247903554},
 64: {0: 3.3166247903554, 1: 3.3166247903554},
 65: {0: 3.3166247903554, 1: 3.3166247903554},
 66: {0: 3.3166247903554, 1: 3.3166247903554},
 67: {0: 3.3166247903554, 1: 3.3166247903554},
 68: {0: 3.3166247903554, 1: 3.3166247903554},
 69: {0: 3.3166247903554, 1: 3.3166247903554},
 70: {0: 3.3166247903554, 1: 3.3166247903554},
 71: {0: 3.3166247903554, 1: 3.3166247903554},
 72: {0: 3.3166247903554, 1: 3.3166247903554},
 73: {0: 3.3166247903554, 1: 3.3166247903554},
 74: {0: 3.3166247903554, 1: 3.3166247903554},
 75: {0: 3.3166247903554, 1: 3.3166247903554},
 76: {0: 3.3166247903554, 1: 3.3166247903554},
 77: {0: 3.3166247903554, 1: 3.3166247903554},
 78: {0: 3.3166247903554, 1: 3.3166247903554},
 79: {0: 3.3166247903554, 1: 3.3166247903554},
 80: {0: 3.3166247903554, 1: 3.3166247903554},
 81: {0: 3.3166247903554, 1: 3.3166247903554},
 82: {0: 3.3166247903554, 1: 3.3166247903554},
 83: {0: 3.3166247903554, 1: 3.3166247903554},
 84: {0: 3.3166247903554, 1: 3.3166247903554},
 85: {0: 3.3166247903554, 1: 3.3166247903554},
 86: {0: 3.3166247903554, 1: 3.3166247903554},
 87: {0: 3.3166247903554, 1: 3.3166247903554},
 88: {0: 3.3166247903554, 1: 3.3166247903554},
 89: {0: 3.3166247903554, 1: 3.3166247903554},
 90: {0: 3.3166247903554, 1: 3.3166247903554},
 91: {0: 3.3166247903554, 1: 3.3166247903554},
 92: {0: 3.3166247903554, 1: 3.3166247903554},
 93: {0: 3.3166247903554, 1: 3.3166247903554},
 94: {0: 3.3166247903554, 1: 3.3166247903554},
 95: {0: 3.3166247903554, 1: 3.3166247903554},
 96: {0: 3.3166247903554, 1: 3.3166247903554},
 97: {0: 3.3166247903554, 1: 3.3166247903554},
 98: {0: 3.3166247903554, 1: 3.3166247903554},
 99: {0: 3.3166247903554, 1: 3.3166247903554}}

我有一个不同长度的列表,其中包含我需要的列的索引。你知道吗

list_idx = [[array([ 7, 12, 49])], [array([ 4, 34, 41, 45, 80, 82])]]

列表的第一个元素是要为第一行提取的值。 <;->;第1行:我需要数据帧的第7、12和49列的值。

这里的代码可以做到这一点,但有没有更快的方法提取值?你知道吗

finalListofList=[
for (row,idx) in zip(df.iterrows(),list_idx ):
   finalListofList.append(list(row[1][idx[0]]))

Tags: 数据方法代码ltgt元素示例df
2条回答

您只需使用^{}

finalListofList = df.loc[0,list_idx[0][0]].values
# array([3.        , 3.        , 3.31662479])

请注意,list_idx[0][0]中的额外[0]是因为您有一个嵌套列表,即list_idx[0]仍然提供一个在本例中无法索引的列表。你知道吗

您可以阅读更多关于索引和选择数据的信息here

在列表理解中使用numpy索引:

finalListofList = [row[idx[0]].tolist() for row, idx in zip(df.values, list_idx)]

相关问题 更多 >