У меня этот DataFrame:
df = pd.DataFrame({'day':['1/1/2017','1/2/2017','1/3/2017','1/4/2017','1/5/2017','1/6/2017','1/7/2017'],
'event':['Rain','Sunny','Snow','Snow','Rain','Sunny','Sunny'],
'temperature': [32, 35, 28,24,32,31,''],'windspeed':[6,7,2,7,4,2,'']})
df
Я пытаюсь найти заголовки для недостающих значений в индексе 6:
for x in df.loc[6]:
if x == '':
print(df.columns.values)
else: print(x)
Я попробовал поиск, и самое близкое, что я мог получить, было тем, что у меня есть сейчас. В конечном итоге я пытаюсь вставить эти значения в dataframe: temperature = 34, windspeed = 8.
Но мой первый шаг был просто попыткой построить оператор loop/if, который говорит, что если x == '' & [COLUMN_NAME] == 'temperature'... и вот где я застрял. Я новичок в python, просто пытаясь узнать Pandas. Мне нужно только вернуть столбец, в котором я включен, а не список всех столбцов.
Есть лучшие способы сделать это, но это работает.
for col, val in df.loc[6].iteritems():
if not val: # this is the same as saying "if val == '':"
print(col)
else:
print(val)
Я бы воспользовался списком:
listOfNulls = [ind for ind in df.loc[6].index if df.loc[6][ind] == '']
и когда я печатаю listOfNulls
, я получаю:
>>>> print(listOfNulls)
Out: ['temperature', 'windspeed']
Ключевым моментом здесь является понимание того, что df.loc [6] - Series
панд, имеющая индексы. Мы используем значения Series
для получения индексов.
Изменено из вашего кода:
for i,x in enumerate(df.loc[6]):
if x == '':
print(df.columns[i])
else: print(x)