#python #list #dataframe #append
#python #Список #фрейм данных #добавить
Вопрос:
У меня есть список, из которого я хотел бы выполнить итерацию и создать кортежи в фрейме данных pandas, чтобы имитировать скользящее окно размером 4. То, что я пытаюсь сделать, это:
tuples = pd.DataFrame()
for index, row in expertsDF.iterrows():
newlst = row['name']
counter = 0
for x in newlst:
if counter < len(newlst) - 3:
tuples['A'] = x
tuples['B'] =newlst(counter 1)
tuples['C'] =newlst(counter 2)
tuples['D'] =newlst(counter 3)
counter = counter 1
новое значение выглядит следующим образом:
list (var1, var2, var3....)
и мой фрейм данных должен быть таким:
A B C D
1 var1 var2 var3 var4
2 var2 var3 var4 var5
3 var3 var4 var5 var6
Есть ли способ сделать это в python?
Комментарии:
1. не могли бы вы опубликовать образец своего вывода?
2. код внутри условия if неверен, поэтому у меня нет выходных данных. Я просто попытался показать, что я пытаюсь сделать.
3. хорошо, @345243lkj готово!
4. извините, что такое
expertsDF.iterrows()
?5. это из библиотеки itertools. Я использовал его для перебора исходного фрейма данных, где хранятся мои значения.
Ответ №1:
Это близко?
import pandas as pd
tuples = pd.DataFrame(columns=['A', 'B', 'C', 'D'])
newlst = "abcdefg"
i = 0
for x in newlst:
if i < len(newlst) - 3:
t = pd.DataFrame([[x, newlst[i 1], newlst[i 2], newlst[i 3]]],
columns=['A', 'B', 'C', 'D'])
tuples = tuples.append(t, ignore_index=True)
i = 1
print tuples
Это печатает:
A B C D
0 a b c d
1 b c d e
2 c d e f
3 d e f g
Ответ №2:
Как насчет создания фрейма данных из объектов серии?
import pandas as pd
data_list = list(map(lambda x: 'var{}'.format(x),range(0,100)))
df = pd.Series(data_list[0:97]).to_frame(name='A')
df['B'] = pd.Series(data_list[1:98])
df['C'] = pd.Series(data_list[2:99])
df['D'] = pd.Series(data_list[3:100])
df.head()
# output
# A B C D
# 0 var0 var1 var2 var3
# 1 var1 var2 var3 var4
# 2 var2 var3 var4 var5
# 3 var3 var4 var5 var6
# 4 var4 var5 var6 var7