【发布时间】:2018-03-04 08:23:10
【问题描述】:
我正在寻找最简单直接的方法来返回值为“1”的数据框或列名列表。
假设我从这个开始:
import pandas as pd
dates = pd.date_range('1/1/2017', periods=4, freq='D')
df = pd.DataFrame({'W01': [0, 0, 0, 1], 'W02': [0, 1, 0, 0], 'W03': [0, 0, 0, 1]
},
index = dates)
df
W01 W02 W03
2017-01-01 0 0 0
2017-01-02 0 1 0
2017-01-03 0 0 0
2017-01-04 1 0 1
我想要一个像这样结束的数据框。或者另一种更智能的方式对值为“1”的列进行分组。
Value X1 X2
2017-01-01 1 NaN NaN
2017-01-02 1 W02 NaN
2017-01-03 1 NaN NaN
2017-01-04 1 W01 W03
或者,解决方案可以返回这样的列表?
2017-01-01, NaN
2017-01-02, W02
2017-01-03, NaN
2017-01-04, W01, W03
我的实际数据框有 85 列和近 700 行。所以解决方案应该能够匹配这些维度。
pandas 中的 get_value 函数似乎还可以,但我想不通:df.get_value(dates, col="1")
或者,我可以使用 lambda,但它不能提供我正在寻找的所有信息。
df.select(lambda x: x == '1', axis=1)
帮助?
【问题讨论】:
标签: python pandas search dataframe lambda