#python #pandas #dataframe #csv
Вопрос:
Я новичок в python и пандах, я пытаюсь создать маленького бота. Может быть, кто-нибудь сможет мне помочь:
у меня есть эти данные в sqlite:
Table users
ID name surname phone timestamp
1 elon mask 33333 2021-08-22 22:01
2 elon mask 33333 2021-08-22 22:02
3 elon mask 33333 2021-08-22 22:03
4 ector vik 44444 2021-08-22 22:01
5 ector vik 44444 2021-08-22 22:02
............... etc.........
я получаю данные из бд 2 раза и:
только имя столбца по дате (чтобы 1 раз иметь только одно имя пользователя) и сохраняю в CSV
listc = c.execute("SELECT Pair FROM users WHERE Timestamp = '" time1min "' ".format(','))
df_to_output = pd.DataFrame(listc)
df_to_output.to_csv("nameusers.csv", index=False)
теперь я получаю все данные и формирую их в фрейме данных pd (я написал, что он работает быстрее) без идентификатора столбца.
df = pd.read_sql_query(«ВЫБРАТЬ * у пользователей», con) df.drop(«ИДЕНТИФИКАТОР», ось=1, место=True)
теперь, если я повторю данные по дате и имени
#i declare timeframe
timenow = time.strftime('%Y-%m-%d %H:%M')
time1min = (datetime.datetime.now() datetime.timedelta(minutes = -1)).isoformat(timespec='minutes', sep=' ')
# i declare name to find
t1 = (df.loc[df['name'] == 'elon'])
все работает хорошо.
чего я не могу понять, так это как выполнить цикл, в котором я запрашиваю все данные для всех строк имени (я создаю файл nameusers.csv со списком имен). я пытался с
ListPair=pd.read_csv("nameusers.csv")
for row in Listnames.iterrows():
t1 = (df.loc[df['name'] == '{row}'])
но я получаю [] … пусто
, может быть, кто-нибудь отвезет меня.
Ответ №1:
Пожалуйста, измените код как for index, row in Listnames.iterrows():
и проверьте его еще раз.
Ответ №2:
Предполагая, что в столбце » Имя » есть какой-то столбец, nameusers.csv
попробуйте что-то вроде этого:
dfONE = pd.DataFrame({'ID': {1: 'elon', 2: 'elon', 3: 'elon', 4: 'ector', 5: 'ector'},
'name': {1: 'mask', 2: 'mask', 3: 'mask', 4: 'vik', 5: 'vik'},
'surname': {1: 33333, 2: 33333, 3: 33333, 4: 44444, 5: 44444},
'phone': {1: '2021-08-22',
2: '2021-08-22',
3: '2021-08-22',
4: '2021-08-22',
5: '2021-08-22'},
'timestamp': {1: '22:01', 2: '22:02', 3: '22:03', 4: '22:01', 5: '22:02'}})
dfTWO = pd.DataFrame({'Name': {0: 'john', 1: 'harry', 2: 'mask'}, 'Col2': {0: 'a', 1: 'b', 2: 'c'}})
print(dfONE, 'n')
print(dfTWO, 'n')
print('# Using the "Name" (captial N) from dfTWO filter the "name" (lowercase N) column in dfONE ')
print(dfONE.loc[dfONE['name'].isin(dfTWO['Name'])])
Выход:
ID name surname phone timestamp
1 elon mask 33333 2021-08-22 22:01
2 elon mask 33333 2021-08-22 22:02
3 elon mask 33333 2021-08-22 22:03
4 ector vik 44444 2021-08-22 22:01
5 ector vik 44444 2021-08-22 22:02
Name Col2
0 john a
1 harry b
2 mask c
# Using the "Name" (captial N) from dfTWO filter the "name" (lowercase N) column in dfONE
ID name surname phone timestamp
1 elon mask 33333 2021-08-22 22:01
2 elon mask 33333 2021-08-22 22:02
3 elon mask 33333 2021-08-22 22:03