Как добавить 24 строки под каждой строкой в ​​кадре данных Python Pandas - PullRequest
1 голос
/ 17 октября 2019

Исходный кадр данных:

a1 a2 a3 a4 a5 a6
b1 b2 b3 b4 b5 b6

Новый кадр данных:

a1 a2 a3 a4 a5 a6
(1-я пустая строка)
(2-я пустая строка)
...
(24-я пустая строка)
b1 b2 b3 b4 b5 b6
(1-я пустая строка)
(2-я строка)пустая строка)
...
(24-я пустая строка)

Вопрос в том, как выполнить приведенное выше преобразование? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Чтобы добавить пустую строку, вы можете использовать следующую инструкцию:

your_dataframe = your_dataframe.append({} , ignore_index=True)

Для выполнения запрошенного преобразования, поскольку я не знаю, как формируются ваши данные и как они индексируются,Я предлагаю вам создать новый пустой фрейм данных.

Для каждой из ваших начальных записей фрейма данных вы должны вставить его в новый и добавить 24 раза пустую строку, как я описал.

Вот пример того, как это выполнить:

## Use your own data instead
data = [['a1', 'a2', 'a3', 'a4', 'a5', 'a6'],['b1', 'b2', 'b3', 'b4', 'b5', 'b6']]
### Load the data in the dataframe
df = pd.DataFrame(data)

## Create the empty dataframe
df2 = pd.DataFrame()

## Use the initial dataframe length to perform the row iteration
length = len(df.index)

## For each rows of the initial dataframe
for i in range(0, length):
    ## Append the current row to the new dataframe
    df2 = df2.append(df[i:i+1],ignore_index=True) 
    ## Adding 24 empty rows
    for j in range(0,25):
        df2 = df2.append({},ignore_index=True)

Итак, если ваш начальный фрейм данных выглядит примерно так:

    0   1   2   3   4   5
0  a1  a2  a3  a4  a5  a6
1  b1  b2  b3  b4  b5  b6

После того, как вы выполнили скрипт,выходы:

      0    1    2    3    4    5
0    a1   a2   a3   a4   a5   a6
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
...
25  NaN  NaN  NaN  NaN  NaN  NaN
26   b1   b2   b3   b4   b5   b6
27  NaN  NaN  NaN  NaN  NaN  NaN
...
49  NaN  NaN  NaN  NaN  NaN  NaN
50  NaN  NaN  NaN  NaN  NaN  NaN
51  NaN  NaN  NaN  NaN  NaN  NaN

0 голосов
/ 17 октября 2019

Использование:

print (df)
    0   1   2   3   4   5
0  a1  a2  a3  a4  a5  a6
1  b1  b2  b3  b4  b5  b6

Сначала несколько значений индекса по числу повторных значений, а затем используйте DataFrame.reindex с np.arange:

N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
      0    1    2    3    4    5
0    a1   a2   a3   a4   a5   a6
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1   b2   b3   b4   b5   b6
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN

РЕДАКТИРОВАТЬ:

print (df)
    0  1   2   3   4  5
0  a1  2  a3  a4  a5  6
1  b1  2  b3  b4  b5  6

N = 5
df.index = df.index * (N + 1)
df = df.reindex(np.arange(df.index.max() + N + 1))
print (df)
      0    1    2    3    4    5
0    a1  2.0   a3   a4   a5  6.0
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1  2.0   b3   b4   b5  6.0
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN

def convert_int_with_NaNs(x):
    try:
        return x.astype('Int64')
    except Exception:
        return x

df = df.apply(convert_int_with_NaNs)
print (df)
      0    1    2    3    4    5
0    a1    2   a3   a4   a5    6
1   NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  NaN  NaN
6    b1    2   b3   b4   b5    6
7   NaN  NaN  NaN  NaN  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN
10  NaN  NaN  NaN  NaN  NaN  NaN
11  NaN  NaN  NaN  NaN  NaN  NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...