#pandas #dataframe
Вопрос:
У меня есть существующий фрейм данных с известными столбцами. Я хочу вставить строку с данными для каждого столбца, вставляемого по одному за раз.
Сначала я создал пустой фрейм данных с несколькими столбцами-
df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
df.to_csv('test.csv', sep='|', index=False)
тест.csv
col1|col2|col3
Затем добавлена строка с данными, вставленными для каждого столбца по одному за раз.
list = ['col1', 'col2', 'col3']
turn = 2
df = pd.read_csv('test.csv', sep='|')
while turn:
for each in list:
df[each] = turn
turn-=1
Ожидаемый выходной тест.csv
col1|col2|col3
2 |2 |2
1 |1 |1
Но я не могу получить ожидаемый результат, вместо этого я получаю это
col1|col2|col3
Пожалуйста, дайте мне знать, где я совершаю ошибку, я был бы очень признателен за любую помощь.
Ответ №1:
Вы можете использовать df.append()
для добавления строки
import pandas as pd
df = pd.DataFrame(columns=['col1', 'col2', 'col3'])
turn = 2
while turn:
new_row = {'col1':turn, 'col2':turn, 'col3':turn}
df = df.append(new_row, ignore_index=True)
turn-=1
Out[11]:
col1 col2 col3
0 2 2 2
1 1 1 1
Ответ №2:
Чтобы изменить цикл while, выполните:
turn = 2
while turn:
for each in list:
df.loc[len(df.dropna()), each] = turn
turn-=1
>>> df
col1 col2 col3
0 2 2 2
1 1 1 1
>>>
Причина, по которой это не работает, заключается в том, что вы назначаете весь столбец… Не конкретное значение строки.