Size: a a a

Python для анализа данных

2019 September 18

А

Алексей in Python для анализа данных
а в цикле проверить методом .isnumeric() и добавлять в лист, если True
источник

YP

Yuriy Prudnikov in Python для анализа данных
Но это будет работать лишь в случае, когда числа разделены пробелами. Т.е. на 15-12 не заработает.
источник

R

Roman in Python для анализа данных
воспользуйтесь функцией .str.contains() она принимает в том числе регулярки, ну и соответственно вам нужна регулярка, которая найдет ваши числа
источник

R

Roman in Python для анализа данных
регулярка которая находит числа в  строке я думаю легко гуглится
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
:(
источник

YP

Yuriy Prudnikov in Python для анализа данных
А можно посмотреть, что у вас в df['Калькулятор']?
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Roman
воспользуйтесь функцией .str.contains() она принимает в том числе регулярки, ну и соответственно вам нужна регулярка, которая найдет ваши числа
через регулярку будет сложно
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Yuriy Prudnikov
А можно посмотреть, что у вас в df['Калькулятор']?
источник

YP

Yuriy Prudnikov in Python для анализа данных
У вас там есть nan значения. Замените их на пустые строки и все заработает
источник

YP

Yuriy Prudnikov in Python для анализа данных
df['Калькулятор'] = df['Калькулятор'].fillna('')

Вот таким образом
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Yuriy Prudnikov
У вас там есть nan значения. Замените их на пустые строки и все заработает
источник

YP

Yuriy Prudnikov in Python для анализа данных
0 - это не пустая строка. Я написал выше, как надо сделать
источник

YP

Yuriy Prudnikov in Python для анализа данных
nan - это float, поэтому вы в apply пытаетесь к флоат применить split, и он совершенно справедливо падает. Вы заменили nan на 0, а 0 - это int. У int все еще нет метода split.
источник

AP

Andrey Pushvitsev in Python для анализа данных
Можно ещё принудительно str(x).split()
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Спасибо, вот что сделал
источник

YP

Yuriy Prudnikov in Python для анализа данных
Владислав Литвинюк
Спасибо, вот что сделал
Не надо использовать циклы, когда работаете с датафреймами. Во-первых потому, что на больших объемах все будет ооочень медленно и больно, а во вторых потому, что 99% задач, которые, как кажется на первый взгляд, надо решать циклами, решаются на самом деле без них.
В этой задаче нужен все тот же apply.
df['Калькулятор 3'] = df['Калькулятор 2'].apply(lambda x: np.mean(x)).fillna(0)
источник

ВЛ

Владислав Литвинюк... in Python для анализа данных
Yuriy Prudnikov
Не надо использовать циклы, когда работаете с датафреймами. Во-первых потому, что на больших объемах все будет ооочень медленно и больно, а во вторых потому, что 99% задач, которые, как кажется на первый взгляд, надо решать циклами, решаются на самом деле без них.
В этой задаче нужен все тот же apply.
df['Калькулятор 3'] = df['Калькулятор 2'].apply(lambda x: np.mean(x)).fillna(0)
Понял, спасибо
источник
2019 September 19

РЧ

Руслан Черненко... in Python для анализа данных
Dmitriy Shashkin
А, ну ещё вариант что из-за того что в цикле отдельные ряды меняются. Я бы рекомендовал вообще избегать циклов при работе с pandas, лучше использовать apply
Спасибо
источник

AP

Andrey Pushvitsev in Python для анализа данных
о, кстати, @goto95
тоже считаю, что циклы это зло, но есть ситуация, в которой всегда использую циклы

например, есть датафрейм с 10 колонками.
нужно все колонки кроме первой разделить на первую, и записать результат каждого деления в отдельную колонку, назвав её так же, но добавив слово "share" к имени колонки.

делаю это так, и не знаю, как это сделать не циклом
df = pd.DataFrame([[i for i in np.random.randint(1,100,10)] for z in range(1,5)])
for col in [i for i in df.columns if i!=0]:
   df[str(col)+'_share'] = df[col]/df[0]


есть тут смысл делать такое не циклом?
источник

АМ

Алексей Макаров... in Python для анализа данных
Andrey Pushvitsev
о, кстати, @goto95
тоже считаю, что циклы это зло, но есть ситуация, в которой всегда использую циклы

например, есть датафрейм с 10 колонками.
нужно все колонки кроме первой разделить на первую, и записать результат каждого деления в отдельную колонку, назвав её так же, но добавив слово "share" к имени колонки.

делаю это так, и не знаю, как это сделать не циклом
df = pd.DataFrame([[i for i in np.random.randint(1,100,10)] for z in range(1,5)])
for col in [i for i in df.columns if i!=0]:
   df[str(col)+'_share'] = df[col]/df[0]


есть тут смысл делать такое не циклом?
Мне кажется тут циклы вполне себе пригодная конструкция. Ведь самые долгие операции деления всё равно векторизованными получаются
источник