Python Pandas: объединить pandas строки, содержащие ноль - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь объединить несколько строковых столбцов, содержащих нулевые значения. Но результат не показывает объединенную строку, а только первый столбец. Как я могу игнорировать значения, содержащие ноль? Я попытался справиться с этим, заменив значения nan, но это не помогло.

import pandas as pd
import numpy as np
df = pd.DataFrame({'Addr1':['a','b','c'], 'Addr2':['', 'x', np.nan], 'Addr3':['202', '201', '203']})
df1 = pd.DataFrame([])
df1['patient address'] = df['Addr1'].astype(str).fillna('',) + " " 
+ df['Addr2'].astype(str).fillna('') + " " 
+ df['Addr3'].astype(str).fillna('') 
print(df1)

Ожидаемый результат:

      patient address
0              a 202
1              b x 201
2              c 203

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

stack и groupby+agg с .join на level=0, stack() по умолчанию сбрасывает NaN:

df1['patient address'] = df.stack().groupby(level=0).agg(' '.join)

0     a  202
1    b x 201
2      c 203
dtype: object
0 голосов
/ 25 марта 2020
import numpy as np
import pandas as pd

df = pd.DataFrame(
    {
        "Addr1": ["a", "b", "c"],
        "Addr2": ["", "x", np.nan],
        "Addr3": ["202", "201", "203"],
    }
)

df1 = pd.DataFrame(
    {
        "patient address": df[["Addr1", "Addr2", "Addr3"]]
        .fillna(" ")
        .agg(" ".join, axis=1)
    }
)

print(df1)

Выход:

  patient address
0          a  202
1         b x 201
2         c   203
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...