Я бег на Python 3.6 и панда 0.19.2 в PyCharm Community Edition 2016.3.2 и пытаются обеспечить набор строк в моей dataframe добавляет к 1.суммирования панды Dataframe
Первоначально мой dataframe выглядит так следующим образом:
hello world label0 label1 label2
abc def 1.0 0.0 0.0
why not 0.33 0.34 0.33
hello you 0.33 0.38 0.15
Я поступайте следующим образом:
# get list of label columns (all column headers that contain the string 'label')
label_list = df.filter(like='label').columns
# ensure every row adds to 1
if (df[label_list].sum(axis=1) != 1).any():
print('ERROR')
к сожалению, этот код не работает для меня. Кажется, что происходит, что вместо суммирования строк я просто получаю значение первого столбца в моих отфильтрованных данных. Другими словами: df[label_list].sum(axis=1)
возвращает:
0 1.0
1 0.33
2 0.33
Это должно быть тривиальным, но я просто не могу понять, что я делаю неправильно. Спасибо за помощь!
UPDATE:
Это выдержка из моих исходных данных после того, как я фильтруется для столбцов метки:
label0 label1 label2 label3 label4 label5 label6 label7 label8
1 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
2 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
3 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
4 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
5 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
6 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
7 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
8 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
9 0.34 0.1 0.1 0.1 0.2 0.4 0.1 0.1 1.2
Мой код из выше до сих пор не работает, и я до сих пор не имеют ни малейшего понятия, почему , Когда я запускаю свой код в консоли python, все работает отлично, но когда я запускаю свой код в Pycharm 2016.3.2, label_data.sum(axis=1)
просто возвращает значения первого столбца.
Что возвращает 'label_list = df.filter (like = 'label'). Columns'? – jezrael
Кажется, что что-то не так с именами столбцов, проверьте его с помощью 'print (df.columns.tolist())' – jezrael
Для вашего образца он возвращает '['hello', 'world', 'label0', 'label1', 'label2'] ' – jezrael