Получив эти данные из XML и сохранив их в Pandas DataFrame, я хотел спросить, нужно ли и как форматировать данные в соответствии с требованиями.
Проблема 1: Обычно каждые три строки необходимо объединить, удалив NaN, чтобы представить одну строку. Например, правильным способом представления этих данных будет:
qid, qualid, val
0 2065887850, 227, (0,0,0,0,0,0,0,0,0,0)
1 2021905255, 30, (49214,.....,...,....)
Проблема 2:
В некоторых местах переменная val фактически отсутствует (каждая третья строка в исходных данных), и для этого мне нужно разместить NaN. Желаемый результат в этом случае будет. В идеале мне нужно решение, которое решает обе проблемы.
qid, qualid, val
0 2065887850, 227, (0,0,0,0,0,0,0,0,0,0)
1 2121905255, 23, (49214,.....,...,....)
2 2834347850, 17, NaN
3 2121905255, 930, (14124,.....,...,....)
4 2465212110, 227, (2,2,1,4,6,7,0,0,0,0)
5 2921905225, 130, NaN
Вы можете попробовать преобразовать фрейм данных в строковый тип и сгруппировать по 3 строкам и добавить строки,
col_1 col_2 col_3
0 29021214 NaN NaN
1 NaN 227 NaN
2 NaN NaN 0,0,0,0
4 20218343 NaN NaN
5 NaN 30 NaN
7 324234 NaN NaN
8 NaN 532 NaN
9 NaN NaN NaN
temp = df.col_1.notnull().cumsum()
df = df.replace(np.nan,'').astype(str)
df.groupby(temp).sum().replace('',np.nan)
Из:
col_1 col_2 col_3
col_1
1 29021214 227 0,0,0,0
2 20218343 30 NaN
3 324234 532.0 NaN
кажется, что ваши данные представляют собой одну запись с данными `` 3 строки '', с этой логикой она не изменит информацию о записи, можете ли вы показать исключительный случай, я изменю ее @AbhinavRalhan
Я не хочу добавлять строки. Это разрушило бы цель набора данных. Каждый идентификатор уникален и связан с ним.