Python 使用列值从DataFrame获取数据
我正在使用Python 使用列值从DataFrame获取数据,python,pandas,dataframe,Python,Pandas,Dataframe,我正在使用pandas.DataFrame.itertuples解析excel工作表,它将在每次迭代中为我提供pandas.DataFrame。考虑熊猫。在每个迭代中返回的数据文件如上所示。 现在关闭每个数据帧Pandas(Index='dog',num_legs=4,num_wings=0)我想使用关键字num_legs访问这些值,但是使用相同的关键字后,我得到以下异常 >>> df = pd.DataFrame({'num_legs': [4, 2], 'num_wings
pandas.DataFrame.itertuples
解析excel工作表,它将在每次迭代中为我提供pandas.DataFrame
。考虑<代码>熊猫。在每个迭代中返回的数据文件如上所示。
现在关闭每个数据帧Pandas(Index='dog',num_legs=4,num_wings=0)
我想使用关键字num_legs
访问这些值,但是使用相同的关键字后,我得到以下异常
>>> df = pd.DataFrame({'num_legs': [4, 2], 'num_wings': [0, 2]},
... index=['dog', 'hawk'])
>>> df
num_legs num_wings
dog 4 0
hawk 2 2
>>> for row in df.itertuples():
... print(row)
...
Pandas(Index='dog', num_legs=4, num_wings=0)
Pandas(Index='hawk', num_legs=2, num_wings=2)
是否有人可以帮助您直接使用列标题从数据框中检索数据。此处:
TypeError: tuple indices must be integers, not str
在这里:
您可以使用
iterrows()
O/p:
您可以使用
iterrows()
O/p:
我在使用变量时也遇到了同样的错误
dog
num_legs 4
num_wings 0
Name: dog, dtype: int64
4
hawk
num_legs 2
num_wings 2
Name: hawk, dtype: int64
2
v = 'num_legs'
for row in df.itertuples():
print(row[v])
TypeError: tuple indices must be integers or slices, not str
使用df.itertuples()
并将属性名称用作变量
dog
num_legs 4
num_wings 0
Name: dog, dtype: int64
4
hawk
num_legs 2
num_wings 2
Name: hawk, dtype: int64
2
v = 'num_legs'
for row in df.itertuples():
print(row[v])
TypeError: tuple indices must be integers or slices, not str
最后,
df.itertuples()
比df.iterrows()快
我在使用变量时遇到了同样的错误
dog
num_legs 4
num_wings 0
Name: dog, dtype: int64
4
hawk
num_legs 2
num_wings 2
Name: hawk, dtype: int64
2
v = 'num_legs'
for row in df.itertuples():
print(row[v])
TypeError: tuple indices must be integers or slices, not str
使用df.itertuples()
并将属性名称用作变量
dog
num_legs 4
num_wings 0
Name: dog, dtype: int64
4
hawk
num_legs 2
num_wings 2
Name: hawk, dtype: int64
2
v = 'num_legs'
for row in df.itertuples():
print(row[v])
TypeError: tuple indices must be integers or slices, not str
最后,
df.itertuples()
比df.iterrows()快
接受这一点,因为我使用itertuples在数据帧上进行迭代。我尝试在使用read\u csv
读取csv时使用相同的方法,但是我在csv中注释后的第一行未被视为列名,使用行[“columnHeader”]时出现异常
虽然这是一个单独的问题,您应该提出,但作为提示,请使用标题
参数。尝试使用标题
参数,不幸的是,csv除了列标题之外还有额外的列数据,因此在使用header
参数进行解析时fails@darth_coder那我建议你再问一个问题,通过正确解释仅列出此问题。接受此问题,因为我使用itertuples在数据帧上进行迭代。当使用read_csv
读取csv时,我尝试使用相同的方法,但是我在csv中注释后的第一行未被视为列名,使用行[“columnHeader”]时出现异常
虽然这是一个单独的问题,您应该提出,但作为提示,请使用标题
参数。尝试使用标题
参数,不幸的是,csv除了列标题之外还有额外的列数据,因此在使用header
参数进行解析时fails@darth_coder那我建议你再问一个问题,只列出这个问题并进行适当的解释。这个答案也是正确的,我现在在编码时使用iterrows
,而不是itertuples
,因为访问数据的方式模仿数组索引操作符。这个答案也是正确的,我现在在编码时使用iterrows
,而不是itertuples
因为访问数据的方式类似于数组索引操作符。您是如何评估得出itertuples
比iterrows
快的结论的?您可以检查这一点,上周我已经对大数据帧进行了测试。您是如何评估得出itertuples
比快的结论的iterrows
?您可以检查这一点,上周我用大数据帧对其进行了测试