python - 读取多个数据时,根据列变量将提取的单元格(iloc)循环到列表中

标签 python pandas

我想根据新创建的列名进行循环,但我在 df1['mouse'].append(a.iloc[5,8]) 处收到此错误:int 对象不可下标。

import pandas as pd
import numpy as np

dfdata = []
for file in files:
    df1 = pd.read_csv(file, sheetname='sheet1')
    dfdata.append(df1)

df1 = pd.concat(dfdata)
df1['mouse'] = np.empty((len(df1),0)).tolist()
df1['kb'] = np.empty((len(df1),0)).tolist()
df1['monitor'] = np.empty((len(df1),0)).tolist()

for a in df1:
    df1['mouse'].append(a.iloc[5,8])
    df1['kb'].append(a.iloc[6,8])
    df1['monitor'].append(a.iloc[7,8])
    b = {'Mouse':df1['mouse'],'Keyboard':df1['kb'],'Monitor':df1['monitor']}

dfAll = pd.DataFrame(b)

最佳答案

抱歉,我还无法评论您的问题,因为我没有足够的声誉点。 因此我写了一个答案。

如果没有真实数据的示例,很难理解您的问题。

但是,我可以在您的代码中看到一些可能的问题:

如果我是正确的,您首先创建 3 个新列,这样每一行都有一个空列表,如下所示:

   mouse  kb monitor
0    []  []      []
1    []  []      []
2    []  []      []
3    []  []      []
4    []  []      []
5    []  []      []

你可以用这段代码来做到这一点:

df1['mouse'] = np.empty((len(df1),0)).tolist()
df1['kb'] = np.empty((len(df1),0)).tolist()
df1['monitor'] = np.empty((len(df1),0)).tolist()

那么我认为您正在尝试用以下内容填充新列:

for a in df1:
    df1['mouse'].append(a.iloc[5,8])
    df1['kb'].append(a.iloc[6,8])
    df1['monitor'].append(a.iloc[7,8])
    b = {'Mouse':df1['mouse'],'Keyboard':df1['kb'],'Monitor':df1['monitor']}

一个问题是,当您调用for a in df1:时,您正在迭代 df1 列的字符串名称。然后你调用.iloc ,但它无法工作,因为 a是一个字符串。 你应该这样做:df1[a].iloc .

但是,如果要选择列中的值,则不能给出 2 个索引,因为列只有一维,因此应该调用 .iloc[i]其中 i 是列的索引。

此外,当您尝试向 df1['mouse'] 添加值时您正在调用.append在所有“鼠标”列上。您还应该定义列的索引,例如df1['mouse'][i]哪里i是一个整数。

但是,由于您连接输入数据帧时没有忽略其原始索引,因此这可能是一个问题。因此,您应该尝试像这样连接它们: df1 = pd.concat(dfdata, ignore_index=True) 。请参阅此处了解更多信息:pandas documentation

我希望我能帮助澄清一下!

关于python - 读取多个数据时,根据列变量将提取的单元格(iloc)循环到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58404342/

相关文章:

python - 更新 Python 列表理解中的 JSON 元素

python - PyMC3 将随机协方差矩阵传递给 pm.MvNormal()

python - Python(或一般的 CS)中的循环或分层字典式数据结构?

python - 如何使用 Python 从 2 个 Excel 中获取额外和缺失的数据

python - 通过 open().read() 读取文件 vs 将其存储在变量中

python - pandas系列最常见的元素

python - Geopandas 数据框指向多边形

python - 遍历 Pandas DataFrame 中的行并生成新列

python - 在 mysql 上使用 pandas 和 sqlalchemy 将元组保存到数据库

python - 从 session 中取消绑定(bind)对象