gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:43 24 4
gpt4 key购买 nike

我想根据新创建的列名进行循环,但我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com