Определяемая пользователем функция для преобразования формата Dataframe? - PullRequest
0 голосов
/ 19 октября 2019

Как изменить фрейм данных, который выглядит следующим образом:

col_name           No. Missing   row_number
ST_NUM                  2          2,4
ST_NAME                 0      
OWN_OCCUPIED            3         1,3,10
NUM_BEDROOMS            2         1,4

хотите преобразовать вышеуказанный фрейм данных как:

col_name           row_number
ST_NUM               2
ST_NUM               4
OWN_OCCUPIED         1
OWN_OCCUPIED         3
OWN_OCCUPIED         10
NUM_BEDROOMS         1
NUM_BEDROOMS         4

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

Предполагая, что вы используете pandas 0.25+, вы можете просто написать:

df.row_number = df.row_number.str.split(",")
df.explode("row_number")[["col_name", "row_number"]]

Затем вам нужно будет отфильтровать строки, соответствующие пустым row_numbers, хотя то, как вы это сделаете, будет зависеть от того, как вы представляетете, на первом месте ("", nan и т. д.).

0 голосов
/ 19 октября 2019

Исходя из этого ответа, вы можете попробовать это:

lengths = [len(item) for item in df['row_number']]

result=pd.DataFrame( {"col_name" : np.repeat(df['col_name'].values,lengths),
                    "No_Missing" : np.repeat(df['No_Missing'].values,lengths),
                        "row_number" : np.hstack(df['row_number'])})

print(result)

       col_name  No_Missing  row_number
0        ST_NUM           2         2.0
1        ST_NUM           2         4.0
2  OWN_OCCUPIED           3         1.0
3  OWN_OCCUPIED           3         3.0
4  OWN_OCCUPIED           3        10.0
5  NUM_BEDROOMS           2         1.0
6  NUM_BEDROOMS           2         4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...