Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中从数据帧(或电子表格)分配变量_Python_Pandas_Openpyxl - Fatal编程技术网

在python中从数据帧(或电子表格)分配变量

在python中从数据帧(或电子表格)分配变量,python,pandas,openpyxl,Python,Pandas,Openpyxl,假设我有以下数据框或电子表格: First Name | Last Name | DOB Goku Saiyan 01/01/1950 Vegetta Super Saiyan 05/04/1981 Freezer Not Saiyan 07/25/1975 我想用python做一些事情,在这里我可以迭代每一行,并将First Name、Last Name和DOB的值赋给变量,这样我就可以做一些事情,比如: for value

假设我有以下数据框或电子表格:

First Name | Last Name   | DOB

Goku           Saiyan      01/01/1950

Vegetta     Super Saiyan   05/04/1981

Freezer      Not Saiyan    07/25/1975
我想用python做一些事情,在这里我可以迭代每一行,并将First Name、Last Name和DOB的值赋给变量,这样我就可以做一些事情,比如:

for value in df_rows:
     print(first_name, last_name, dob)
并将这些值转换为数据框或电子表格中每行数据的变量

我读到过这样一篇文章:用Pandas遍历行是不好的,尽管这似乎是更简单的方法

使用openpyxl,我可以打印并获取每个单元格的
单元格.value
,但这也包括所有的空单元格,这会打乱我想要使用的循环的工作流程


如果其他人知道更好的方法,我将不胜感激。

我不知道不建议迭代pandas数据帧的行,但既然您提到了它,我想测试它

我使用以下内容重新创建了您的数据帧:

df = pd.DataFrame({
    "first" : ["Goku", "Vegetta", "Freezer"],
    "last" : ["Saiyan", "Super Saiyan", "Not Saiyan"],
    "DOB" : [pd.to_datetime("01/01/1950"), pd.to_datetime("05/04/1981"), pd.to_datetime("07/25/1975")]
})
然后我创建了两种方法:

def iterate_df(df):
  for i in range(df.shape[0]):
    first = df.loc[i, "first"]
    last = df.loc[i, "last"]
    DOB = df.loc[i, "DOB"]

def iterate_array(df):
  firsts = df["first"]
  lasts = df["last"]
  DOBs = df["DOB"]
  for first, last, dob in zip(firsts, lasts, DOBs):
    pass
然后,我按照以下方式对这些方法进行计时:

import time
start = time.time()
for i in range(10000):
  iterate_df(df)
end = time.time()
print(end - start)
>>> 1.0347726345062256

import time
start = time.time()
for i in range(10000):
  iterate_array(df)
end = time.time()
print(end - start)
0.32233428955078125

这真的很有趣,因为我不知道行迭代的问题。但是,我们可以看到,分配变量的一种更好的方法是使用第二种方法。

那么您想要一个包含所有三列的dataframe变量<代码>'Goku Saiyan 01/01/1950'不,如果不清楚,很抱歉。我希望每行和每列的每个值都有一个变量,比如
first\u name=Goku
last\u name=Saiyan
dob=01/01/1950
这肯定是一个彻底的答案,如果它按预期工作,我会尝试并回来标记为正确,非常感谢