dataframe 条件取非_在大熊猫DataFrame中获取非空元素

I have a DataFrame and I want to get some non-null elements as a list.

Specifically, given df:

df = pd.DataFrame({"a":["A",None,"B"],"b":[None,"C","D"],"c":["E","F",None]})

a b c

0 A None E

1 None C F

2 B D None

and the interesting columns list ["a","c"], I want to extract the list of non-None element of the specified columns, i.e.,

["A","B","E","F"]

I guess I can do

[value for colname in interesting_columns

for value in df.loc[df[colname].notnull(),colname]]

but I was wondering if there is some non-iterative magic trick.

解决方案

You can stack it to long format and retrieve the data with .values accessor. By default, stack() drops missing values automatically:

df[['a', 'c']].T.stack().values

# array(['A', 'B', 'E', 'F'], dtype=object)

Or if you want a list:

df[['a', 'c']].T.stack().tolist()

# ['A', 'B', 'E', 'F']

T is needed to get the values in the order you requested.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值