Панды: извлекать значения из столбца на основе значений из другого столбца - PullRequest
0 голосов
/ 13 сентября 2018

Теперь у меня есть список индексов label_index. Я хочу извлечь соответствующие значения из кадра данных label_file на основе индексов. Значения label_index появятся в столбце image_num в кадре данных, и цель состоит в том, чтобы получить список соответствующих значений в столбце Thermal conductivity(W/mK).

label_file = pd.read_excel("/Users/yixuansun/Documents/Research/ThermalConductiviy/Anisotropic/anisotropic_porous_media/data.xlsx",
                            sheet_name = "total")
label = []

for i in label_index:
    for j in range(len(label_file)):
        if i == label_file.iloc[j]["image_num"]:
            label.append(label_file.iloc[j]["Thermal conductivity(W/mK)"])

Я использовал грубую силу, чтобы найти совпадение (два для петель). Это займет очень много времени, чтобы пройти. Мне интересно, есть ли более эффективный способ сделать это.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Я сам нашел быстрый, но чище способ.

ther = []
for i in label_index:
    ther.append(label_file.loc[i]["Thermal conductivity(W/mK)"])

Это сделает работу.

0 голосов
/ 13 сентября 2018

Получить столбец «Теплопроводность (Вт / мК)», где столбец «image_num» имеет одно из значений, указанных в label_index списке:

series = label_file.loc[
    label_file['image_num'].isin(label_index),
    'Thermal conductivity(W/mK)']

РЕДАКТИРОВАТЬ 1: Для сортировки по label_index вы можете использовать вспомогательный столбец следующим образом:

df = label_file.loc[
    label_file['image_num'].isin(label_index),
    ['Thermal conductivity(W/mK)', 'image_num']]
# create aux. column to sort by
df['sortbyme'] = df['image_num'].apply(lambda x: label_index.index(x))

# sort by aux. column and get only 'Thermal conductivity(W/mK)' column
series = df.sort_values('sortbyme').reset_index()['Thermal conductivity(W/mK)']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...