Объединение столбцов с разными именами в один столбец, заполнение NaN - PullRequest
0 голосов
/ 22 ноября 2018

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

data = [['1',np.nan,np.nan],['2',np.nan,np.nan],[np.nan,'3',np.nan],
        [np.nan,'3',np.nan],[np.nan,'3',np.nan],[np.nan,np.nan,'15'],[np.nan,np.nan,'15']]
df = pd.DataFrame(data,columns=['no','number', 'numbers'])
df
  no number numbers
0    1    NaN     NaN
1    2    NaN     NaN
2  NaN      3     NaN
3  NaN      3     NaN
4  NaN      3     NaN
5  NaN    NaN      15
6  NaN    NaN      15

Result = [['1'],['2'],['3'],['3'],['3'],['15'],['15']]
Expected = pd.DataFrame(Result, columns = ['NUMBER'])
Expected
 NUMBER
0      1
1      2
2      3
3      3
4      3
5     15
6     15

1 Ответ

0 голосов
/ 22 ноября 2018

Используйте stack с reset_index и для преобразования Series в один столбец DataFrame функция to_frame:

df = df.stack().reset_index(drop=True).to_frame('NUMBER')
print (df)
  NUMBER
0      1
1      2
2      3
3      3
4      3
5     15
6     15

РЕДАКТИРОВАТЬ:

data = [['1','100',np.nan],['2',np.nan,np.nan],[np.nan,'3',np.nan],
        [np.nan,'3',np.nan],[np.nan,'3',np.nan],[np.nan,np.nan,'15'],
        [np.nan,np.nan,'15']]
df = pd.DataFrame(data,columns=['no','number', 'numbers'])
print (df)
    no number numbers
0    1    100     NaN
1    2    NaN     NaN
2  NaN      3     NaN
3  NaN      3     NaN
4  NaN      3     NaN
5  NaN    NaN      15
6  NaN    NaN      15

Если хотите, чтобы первое не числовое значение в строках:

df1 = df.bfill(axis=1).iloc[:, 0].to_frame('NUMBER')
print (df1)
  NUMBER
0      1
1      2
2      3
3      3
4      3
5     15
6     15

При необходимости все не числовые значения:

df2 = df.stack().reset_index(drop=True).to_frame('NUMBER')
print (df2)
  NUMBER
0      1
1    100
2      2
3      3
4      3
5      3
6     15
7     15
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...