import datetimetodays_date = datetime.datetime.Now().date() index = pd.date_range(todays_date-datetime.timedelta(10),periods=2,freq='D')columnheader=['US','Canada','UK','Japan']data=np.array([[3,4,2,1],[1,3,2]])df = pd.DataFrame(data,index=index,columns=columnheader)
结果如下:
US Canada UK Japan2015-07-26 3 4 2 12015-07-27 1 4 3 2
我需要找到每个行的值为1和2的列标题.
所以我应该得到
['Japan','UK']['US','Japan']解决方法 您可以执行以下 *** 作,使用isin测试每行的成员资格1,2如果是这样生成一个布尔系列,您可以使用它通过再次调用apply来索引列,我们将其转换为列表,因为维度如果你不这样做,将不会对齐:
In [191]:df.apply(lambda x: x.isin([1,2]),axis=1).apply(lambda x: List(df.columns[x]),axis=1)Out[191]:2015-07-26 [UK,Japan]2015-07-27 [US,Japan]Freq: D,dtype: object
内部输出申请:
In [192]:df.apply(lambda x: x.isin([1,axis=1)Out[192]: US Canada UK Japan2015-07-26 False False True True2015-07-27 True False False True
编辑
如果您想维护订单,那么您可以定义一个func来测试每个值并将其作为一个系列返回:
In [209]:filter_vals=[1,2]def func(x): l=[] for val in filter_vals: for col in df: if x[col] == val: l.append(col) return pd.SerIEs(l)df.apply(func,axis=1)Out[209]: 0 12015-07-26 Japan UK2015-07-27 US Japan总结
以上是内存溢出为你收集整理的python – 根据每行中的值获取列标题全部内容,希望文章能够帮你解决python – 根据每行中的值获取列标题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)