Как объединить все строки в одну строку многостолбцового DataFrame? - PullRequest
0 голосов
/ 05 декабря 2018

В Python

  1. Как наилучшим образом объединить все строки каждого столбца в многостолбцовом фрейме данных в один столбец,
  2. , разделенные '|'разделитель
  3. , включая нулевые значения

    import pandas as pd html = 'https://en.wikipedia.org/wiki/Visa_requirements_for_Norwegian_citizens' df = pd.read_html(html, header=0) df= df[1] df.to_csv('norway.csv)

От этого: До этого:

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018
df = pandas.DataFrame([
    {'A' : 'x', 'B' : 2, 'C' : None},
    {'A' : None, 'B' : 2, 'C' : 1},
    {'A' : 'y', 'B' : None, 'C' : None},
])

pandas.DataFrame(df.fillna('').apply(lambda x: '|'.join(x.astype(str)), axis = 0)).transpose()
0 голосов
/ 05 декабря 2018

Полагаю, вам нужно заменить пропущенные значения, если необходимо, на fillna, преобразовать значения в строки с astype и apply с join.Получите Series, поэтому для одного столбца DataFrame добавьте to_frame с транспонированием:

df = df.fillna(' ').astype(str).apply('|'.join).to_frame().T
print (df)
                      Country Allowed_stay        Visa_requirement
0  Albania|Afganistan|Andorra     30|30|60  visa free| | visa free

Или используйте понимание списка с конструктором DataFrame:

L = ['|'.join(df[x].fillna(' ').astype(str)) for x in df]
df1 = pd.DataFrame([L], columns=df.columns)
print (df1)
                      Country Allowed_stay        Visa_requirement
0  Albania|Afganistan|Andorra     30|30|60  visa free| | visa free
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...