#python #pandas #dataframe #loops
#python #pandas #фрейм данных #циклы
Вопрос:
Как выполнить итерацию по каждой ячейке фрейма данных pandas?
Нравится
for every_cell in df.iterrows:
print(cell_value)
печать, конечно, не является целью.
Значения ячеек df должны быть обновлены в MongoDB.
Ответ №1:
если это должен быть цикл for, вы можете сделать это следующим образом:
def up_da_ter3(df):
columns = df.columns.tolist()
for _, i in df.iterrows():
for c in columns:
print(i[c])
print("############")
Ответ №2:
Вы можете использовать applymap
. Он будет перебирать каждый столбец, начиная с самого левого. Но в целом вам почти никогда не нужно перебирать каждое значение фрейма данных, pandas имеет гораздо более эффективные способы выполнения вычислений.
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(6).reshape(-1, 2), columns=['A', 'B'])
# A B
#0 0 1
#1 2 3
#2 4 5
df.applymap(lambda x: print(x))
0
2
4
1
3
5
Если вам нужно растрировать фрейм данных по строкам, вы можете transpose
сначала:
df.T.applymap(lambda x: print(x))
0
1
2
3
4
5
Комментарии:
1. я только что отредактировал исходное сообщение. Цель состоит в том, чтобы обновлять значения в MongoDB значение по значению. Есть ли более эффективный способ, чем цикл for?
Ответ №3:
Одним из способов в качестве опции может быть использование цикла double for в квадратных скобках, например
for i in [df[j][k] for k in range(0,len(df)) for j in df.columns]:
print(i)
для того, чтобы выполнить итерацию, начиная с первого столбца до последнего в первой строке, а затем повторить тот же процесс для каждой строки по порядку членов списков.