在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
这肯定是一个彻底的答案,如果它按预期工作,我会尝试并回来标记为正确,非常感谢