Добавить значение в dataframe используя цикл for - PullRequest
1 голос
/ 27 июня 2019

Я новичок в StackOverflow

Я второй раз задаю подобный вопрос, потому что первый был неясным и повторяющимся. Кстати, я новичок и пытаюсь научиться веб-скребу.

Это то, что я сделал до сих пор:

У меня есть список строк, где первый индекс - это имя столбца, следующий индекс которого имеет значение. Точно так же третий индекс - это имя столбца, но с другим именем, имеющим четвертый индекс - это значение.

Я хотел поместить весь этот список во фрейм данных с именем столбца 'i' со значением 'i_next'

text=my_detail[0].split('\n')
#for example text=['a','2','b','3',c,'4'] <is a list not dataframe>
#some of the string in text is not require
#example the text can be ['a','2','f','b','3','c','4']

df = pd.DataFrame(columns=['a','b','c'])

for i,nexti in zip(text,text[1:]):

    if i in df.columns:
        #store df at column name i having value nexti  
'''
The expected answer is
a b c
2 3 4
'''

Если у этого вопроса снова возникли какие-либо проблемы или дубликаты, вы можете прокомментировать, и я удалю его.

Спасибо за внимание,

1 Ответ

3 голосов
/ 27 июня 2019

Использовать DataFrame конструктор, получать значения для индексации:

df = pd.DataFrame([text[1::2]], columns=text[::2])
print (df)
   a  b  c
0  2  3  4

EDIT:

Решение в цикле - идея состоит в том, чтобы создать список словарей и передать его конструктору DataFrame:

L= [['a\n2','b\n3','c\n4'], ['a\n20','b\n30','c\n40']]

final = []
for x in L:
    inner = {}
    for y in x:
        text = y.split('\n')
        for a, b in zip(text[::2],text[1::2]):
            inner[a] = b
    final.append(inner)

print (final)
[{'a': '2', 'b': '3', 'c': '4'}, {'a': '20', 'b': '30', 'c': '40'}]

df = pd.DataFrame(final)
print (df)

    a   b   c
0   2   3   4
1  20  30  40
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...