Копировать строку на основе условного - PullRequest
0 голосов
/ 08 сентября 2018

Я прочитал по крайней мере 10 ответов на очень похожие вопросы, но ни один из них не работает и / или не совсем то, что мне нужно. У меня есть большой массив данных, где он мне нужен, чтобы найти конкретную строку и создать копию всей строки. Так, например:

До:

index    price   quantity    flavor    
0        1.45    6           vanilla   
1        1.85    3           berry   
2        2.25    2           double chocolate

После того, как:

index    price   quantity    flavor    
0        1.45    6           vanilla   
1        1.85    3           berry   
2        2.25    2           double chocolate
3        1.85    3           berry

То, что работает на основании моих знаний о пандах и питоне, выглядит так:

df.loc[df.index.max() + 1,:] = df.loc[df['flavor'] == 'berry'].values

Однако я получаю эту ошибку:

ValueError: установка элемента массива с последовательностью.

Имейте в виду, что я понятия не имею, где в базе данных может быть «ягода» (кроме того, что будет в столбце «вкус»). (отредактируйте, чтобы добавить) Также может быть несколько "ягод", поэтому нужно будет найти их все.

Мысли

Ответы [ 2 ]

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

Я придумал немного другой ответ, чем то, что предложил @ user2906838.Поскольку возможно, что в фрейме данных имеется более одной «ягоды», я создал новый фрейм данных и затем объединил их:

import pandas as pd
df = pd.DataFrame({'quantity':[6, 3, 2], 'flavor':['vanilla', 'berry', 'double chocolate'], 'price':[1.45, 1.85, 2.25]})
df_flavor = pd.DataFrame
df_flavor.append(df.loc[df['flavor'] == 'berry'], sort = False)
df = pd.concat([df, df_flavor], sort = False, ignore_index = True)

Это сработало бы хорошо, но хотелось бы услышать, если есть другие решения!

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

Итак, это, вероятно, то, что вы хотите:

import pandas as pd
df = pd.DataFrame({"quantity":[6, 3, 2], "flavor":["vanilla", "berry", "double chocolate"], "price":[1.45, 1.85, 2.25]})
df = df.append(df.loc[df['flavor'] == 'berry']).reset_index()
df
#output
    flavor  price   quantity
0   vanilla 1.45    6
1   berry   1.85    3
2   double chocolate    2.25    2
3   berry   1.85    3

Просто используйте append и сбросьте индекс, чтобы сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...