想要在条件

时间:2018-10-03 07:13:17

标签: python pandas dataframe

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 :(得分:1)

我相信您需要删除缺失的值,并在最后一行添加-为一行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

详细信息

print (quantity[["a","b","c"]].dropna().iloc[[-1]])
   a  b    c
2  7  5  9.0

答案 1 :(得分:1)

如果您的df是这些:

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

答案 2 :(得分:0)

我会过滤df上的not null,然后简单地添加价格:

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

其中c是您的列名。

new_df['price'] = 32  # or the price from your df