Хотите присоединиться к последнему ряду двух датафреймов при условии - PullRequest
0 голосов
/ 03 октября 2018
quantity:          
a   b   c
3   1   nan
3   2   8
7   5   9
4   8   nan

price
34

У меня есть два кадра данных количества и цены, и я хочу присоединить последнюю строку кадра данных количества к цене, где c не nan

Я написал этот запрос, но не получилжелаемый результат:

price = pd.concat(price,quantity["a","b","c"].tail(1).isnotnull())

что я хочу, это:

price a b c
34    7 5 9

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Я бы отфильтровал df на not null, а затем просто добавил к нему цену:

new_df = df[df['c'].notnull()]

Где c - это имя вашего столбца.

new_df['price'] = 32  # or the price from your df
0 голосов
/ 03 октября 2018

Если ваши dfs:

df = pd.DataFrame([[3,1,np.nan], [3,2,8], [7,5,9], [4,8,np.nan]], columns=['a','b','c'])
df2 = pd.DataFrame([34], columns=['price'])

Вы можете сделать это следующим образом:

final_df = pd.concat([df.dropna(subset=['c']).tail(1).reset_index(drop=True), df2], axis=1)

Выход:

   a  b    c  price
0  7  5  9.0     34
0 голосов
/ 03 октября 2018

Я считаю, что вам нужно удалить пропущенные значения, а для последней строки - добавлено двойное [] для одной строки. DataFrame:

df=pd.concat([price.reset_index(drop=True),
             quantity[["a","b","c"]].dropna(subset=['c']).iloc[[-1]].reset_index(drop=True)], 
             axis=1)
print (df)
   price  a  b    c
0     34  7  5  9.0

Detail :

print (quantity[["a","b","c"]].dropna().iloc[[-1]])
   a  b    c
2  7  5  9.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...