#python #pandas
#python #pandas
Вопрос:
Почему
df = pd.DataFrame({user, points, timestr})
в
import pandas as pd
import time
timestr = time.strftime("%Y-%m-%d %H:%M")
url_all_time = 'https://community.koodomobile.com/widget/pointsLeaderboard?period=allTimeamp;maxResults=20amp;excludeRoles='
data = pd.read_json(url_all_time)
user = data['name'][0]
points = data['points'][0]
df = pd.DataFrame({user, points, timestr})
# df = df.transpose()
df.to_csv('products.csv', mode='a', index=False, header=False, encoding='utf-8')
Генерирует результаты случайного порядка? Почему он не следует user, points, timestr? Иногда сначала идут имена, иногда время, иногда точки? Я не понял, как работает pd.df?
Комментарии:
1. Потому
{user, points, timestr}
что это aset
, аset
объекты имеют произвольный порядок. Если вам нужен тип контейнера, который сохраняет порядок, используйте список или кортеж.2. В любом случае, чтобы сделать его не произвольным?
Ответ №1:
Код {user, points, timestr}
создает один set
из этих трех объектов. Объекты набора упорядочены произвольно, поэтому вы видите разные порядки при разных запусках. Чтобы сохранить порядок, используйте список или кортеж.
# list
pd.DataFrame([user, points, timestr])
# tuple
pd.DataFrame((user, points, timestr))
Комментарии:
1. В итоге я сделал idata= (user, points, timestr) df = pd.DataFrame(idata)
2. Отлично. Это создает кортеж, который похож на второе решение в моем ответе.