Я действительно новичок в Python и науке о данных.
У меня есть набор данных 100K + CSV с 30 столбцами. Цель состоит в том, чтобы добавить несколько строк в набор данных, если выполняются некоторые условия.
Чтобы упростить задачу, скажем, у меня есть только три столбца с именами "A", "B" и "C", тип Aи B является целым числом. C - это строка.
Давайте не будем беспокоиться о B и C, так как я собираюсь установить все значения столбца B в 0, а потом вычислю C.
Итак, вот краткий обзор моего«Мнимый» набор данных:
A
_____
| 1 |
| 4 |
| 3 |
| 7 |
_______
Я проанализировал свой набор данных в кадре данных и отсортировал его по значению «A».
Итак, теперь это выглядит так:
A
_____
| 1 |
| 3 |
| 4 |
| 7 |
_______
Теперь я хочу перебрать свой DataFrame и проверить, не пропустил ли я какое-то число между двумя строками, и добавить их в dataframe, то есть: если A [i + 1] -A [i]> 1, iхочу добавить A [i] +1 между ними.
A
_____
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
_______
Итак, насколько я знаю, у меня есть следующие варианты:
- Добавлять мои новые строки непосредственно в новый Dataframe. Я не знаю почему, но я думаю, что это не очень хорошая идея. Если я прав, вы можете объяснить, почему? Если я не прав, вы, ребята, можете объяснить, почему?
- Добавьте мои новые строки в Список, создайте DataFrame из этого Списка и "Соедините" мой старый DataFrame с моим новым.
- Idk, любойпредложение?
Моя главная проблема сейчас, это то, что работа с большим DataFrame - боль в заднице, и моему сценарию требуются годы, чтобы выполнить эту работу. Ребята, можете ли вы привести меня к «Правильному способу» работы с таким большим количеством данных?
Кстати, вот код, который я сделал для выбора n ° 2:
df=pd.read_csv("dataset.csv")
df.sort_values(by="A")
L=[]
for i in range (0, len(df)-1):
actual=df.at[i, 'A']
next=df.at[(i+1), 'A']
diff=actual-next-1
for j in range(1, diff):
L.append(actual+1)
actual +=1
df=pd.DataFrame(data=L, columns=list(df))
df.to_csv("my_output.csv", sep=',')