【问题标题】:Slicing concatenated dataframe in pandas在熊猫中切片连接的数据帧
【发布时间】:2019-10-02 21:58:10
【问题描述】:

我使用以下代码创建了一个导入多个文本文件并将它们连接到一个数据框中的数据框:

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))

我现在想创建 n 数组,获取较大数据帧中包含的每个 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]

【问题讨论】:

  • 在不知道您的数据是什么样子的情况下很难回答。您能否发布一个数据输出示例——尤其是变量dat
  • 好的,为 dat 添加了一个小示例并获得所需的结果
  • 这很有帮助。 list 是什么样的?我只是想重现错误。
  • 它看起来像 dat 部分之一,例如,如果您使用索引为 0 的部分: | |一个 |乙 | c | |---|-----|-----|-----| | 0 | 0.1 | 5.3 | 7.2 | | 1 | 3.2 | 2.5 | 5.4 | | 2 | 0.3 | 0.5 | 6.2 | ```

标签: python pandas dataframe concatenation slice


【解决方案1】:
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”,然后将它们列出。

【讨论】:

    猜你喜欢
    • 2019-10-29
    • 2021-01-05
    • 1970-01-01
    • 2020-08-30
    • 2017-10-15
    • 1970-01-01
    • 2021-07-30
    • 2022-10-14
    • 1970-01-01
    相关资源
    最近更新 更多