Как лучше всего обрабатывать список числовых кодов в виде описаний и в Pandas? - PullRequest
0 голосов
/ 01 марта 2020

Вот набор данных:

df = pd.read_csv('https://data.lacity.org/api/views/d5tf-ez2w/rows.csv?accessType=DOWNLOAD')

Проблема: у меня есть pandas фрейм данных о трафике c несчастных случаев в Лос-Анджелесе. У каждой аварии есть столбец mo_codes, который представляет собой строку числовых кодов (которые я преобразовал в список кодов). Вот скриншот:

first

У меня также есть словарь описания mo_codes для каждого соответствующего mo_code и загруженный в блокнот.

second

Теперь, используя приведенный ниже код, я могу объединить код цифры 1030 * с описанием:

mo_code_list_final = []
for i in range(20):
  for j in df.mo_codes.iloc[i]:
    print(i, mo_code_dict[j])

Итак, я не добавил это как столбец до Pandas пока. Я хотел спросить, есть ли лучший способ решить мою проблему, а именно, как лучше всего добавить текстовое описание в pandas в виде столбца.

Кроме того, есть более простой способ обработать это с помощью функции pandas, например .assign вместо для l oop. Может быть, понимание списка для обработки mo_codes в новый фрейм данных с описанием?

Заранее спасибо.

ps. если есть техническое слово для решения проблемы такого типа, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 01 марта 2020
import pandas
codes = {0:'Test1',1:'test 2',2:'test 3',3:'test 4'}
df1 = pandas.DataFrame([["red",[0,1,2],5],["blue",[3,1],6]],columns=[0,'codes',2])

# first explode the list into its own rows
df2 = df1['codes'].apply(pandas.Series).stack().astype(int).reset_index(level=1, drop=True).to_frame('codes').join(df1[[0,2]])

#now use map to apply the text descriptions
df2['desc'] = df2['codes'].map(codes)

print(df2)
"""
   codes     0  2    desc
0      0   red  5   Test1
0      1   red  5  test 2
0      2   red  5  test 3
1      3  blue  6  test 4
1      1  blue  6  test 2
"""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...