在熊猫中切片连接的数据框

时间:2019-05-15 17:26:59

标签: python pandas dataframe concatenation slice

我创建了一个使用以下代码导入多个文本文件并将其串联在单个数据框中的数据框:

list=[]
for filename in allfiles:
    df = pd.read_csv(filename, index_col=None, header=0,delim_whitespace=True, skipfooter = 1,engine='python')
    list.append(df)

dat = pd.concat(list, axis=0, keys=range(0,len(allfiles))

我现在想使用较大数据框中包含的每个df第二列的 n 元素创建 n 数组,或多或少地创建第二个数组的转置列,其中在所有不同数据文件的第二列中找到的所有元素 n 行。

我尝试通过以下方式使用.loc()和.iloc()将数据帧dat切片:

dat.iloc[:,2,n]

但它表示索引不足。

以下是dat的简短示例:

|   |   | a   | b   | c   |  
|---|---|-----|-----|-----|  
| 0 | 0 | 0.1 | 5.3 | 7.2 |  
|   | 1 | 3.2 | 2.5 | 5.4 |  
|   | 2 | 0.3 | 0.5 | 6.2 |  
| 1 | 0 | 6.7 | 4.5 | 7.2 |  
|   | 1 | 9.4 | 6.3 | 5.7 |  
|   | 2 | 6.4 | 4.5 | 6.7 |  
| 2 | 0 | 3.4 | 5.6 | 0.5 |  
|   | 1 | 1.9 | 0.3 | 1.2 |  
|   | 2 | 0.4 | 0.7 | 2.6 |

最后,我想获得以下形式的数组:
l_1 = [5.3,4.5,5.6],l_2 = [2.5,6.3,0.3],l_3 = [0.5,4.5,0.7]

1 个答案:

答案 0 :(得分:2)

df.groupby(level = 1)['b'].apply(list)

0    [5.3, 4.5, 5.6]
1    [2.5, 6.3, 0.3]
2    [0.5, 4.5, 0.7]

您可以按索引的1级分组,然后查看“ b”列,然后将其列出。