[英]Extracting multiple rows from pandas dataframe and converting to columns
我想改变这种感觉。 数据帧:
index YR BIOM RWT site
0 0 2008 0.53 0.20 1
1 1 2009 3.23 1.18 1
2 2 2010 11.51 3.94 1
3 3 2011 18.14 5.82 1
4 4 2012 22.88 6.73 1
5 5 2013 26.65 7.20 1
6 0 2008 0.39 0.15 10
7 1 2009 2.43 0.90 10
8 2 2010 8.95 3.09 10
9 3 2011 16.63 5.38 10
10 4 2012 24.36 7.23 10
11 5 2013 29.72 8.10 10
我想提取BIOM
值的两个独特的site
,即1和10的YR
2008年和2013年,使我得到这样的:
index BIOM_2008 BIOM_2013 site
0 0.53 26.65 1
1 26.65 29.72 10
这就是我在做什么:
lst_yrs = [2008, 2013]
sub_df = df[['YR', 'BIOM', 'site']]
for yr in lst_yrs:
sub_df['BIOM'+str(yr)] = sub_df.loc['YR' == yr]
不确定如何正确获取for循环。
我不确定您是否需要在此处循环。 您可以简单地创建所需数据的一部分,设置索引,然后按如下所示进行堆栈:
import pandas as pd
DF = pd.DataFrame({
'site' : [1, 1, 1, 1, 1, 1, 10, 10, 10],
'BIOM' : [0.53, 3.23, 11.51, 18.14, 22.88, 26.65, 0.39, 2.43, 8.95],
'YR' : ['2008', '2009', '2010', '2011', '2012', '2013', '2008', '2009', '2010']
})
slice = DF[(DF['site'].isin([1, 10]) & DF['YR'].isin(['2008', '2013']))]
result = slice.set_index(['site','YR']).unstack('YR')
给出以下内容:
BIOM
YR 2008 2013
site
1 0.53 26.65
10 0.39 NaN
为了回应您的评论,要展平层次结构列索引,请执行以下操作:
result.columns = [' '.join(col).strip() for col in result.columns.values]
site BIOM 2008 BIOM 2013
0 1 0.53 26.65
1 10 0.39 NaN
可能现在这比您原来的循环想法更复杂,但我认为它以更复杂的方式使用了熊猫功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.