如何 select 基于数据框中值的行索引和变量名?
how to select row index and variable name based on value in a data frame?
我有一个由 -1.0 到 1.0 之间的浮点数组成的大型数据框。我想创建一个新列表,其中包含索引行、变量名称和所有数字大于 0.59 的单元格的值。
这是一个例子:
A B C D ... FD
0 0.34 -0.23 0.6 0.7 ... 0.3
1 -0.5 0.99 0.8 0.2 ... 0.8
...
45 0.8 0.13 0.34 0.4 ... -0.9
output:
0 C 0.6
0 D 0.7
1 B 0.99
1 C 0.8
...
1 FD 0.8
etc..
谢谢!
我相信肯定有比我的更好的解决方案,因为我的性能很糟糕(逐个单元地迭代)。但这是我的尝试:
# creating a sample df
df = pd.DataFrame(np.random.uniform(-1, 1, size=(10, 4)), columns=list('abcd'))
new_list = []
for tup in df.itertuples():
for i in range(1, len(tup)):
if tup[i] > 0.59:
new_list.append([tup.Index, df.columns[i-1], tup[i]])
new_df = pd.DataFrame(new_list, columns=['index', 'column', 'value'])
new_df = new_df.set_index('index')
我有一个由 -1.0 到 1.0 之间的浮点数组成的大型数据框。我想创建一个新列表,其中包含索引行、变量名称和所有数字大于 0.59 的单元格的值。
这是一个例子:
A B C D ... FD
0 0.34 -0.23 0.6 0.7 ... 0.3
1 -0.5 0.99 0.8 0.2 ... 0.8
...
45 0.8 0.13 0.34 0.4 ... -0.9
output:
0 C 0.6
0 D 0.7
1 B 0.99
1 C 0.8
...
1 FD 0.8
etc..
谢谢!
我相信肯定有比我的更好的解决方案,因为我的性能很糟糕(逐个单元地迭代)。但这是我的尝试:
# creating a sample df
df = pd.DataFrame(np.random.uniform(-1, 1, size=(10, 4)), columns=list('abcd'))
new_list = []
for tup in df.itertuples():
for i in range(1, len(tup)):
if tup[i] > 0.59:
new_list.append([tup.Index, df.columns[i-1], tup[i]])
new_df = pd.DataFrame(new_list, columns=['index', 'column', 'value'])
new_df = new_df.set_index('index')