使用 pandas 在 python 中将值写入 excel
Posted
技术标签:
【中文标题】使用 pandas 在 python 中将值写入 excel【英文标题】:Writing values to excel in python using pandas 【发布时间】:2018-10-17 08:32:26 【问题描述】:我是 python 新手,想将 excel 文件中的 ZipCode 传递给“uszipcode”包,并将该特定邮政编码的状态写入 excel 表中的“OriginalZipcode”列。这样做的原因是,我想将现有状态与原始状态进行比较。我不明白代码中的 for 循环是错误的还是其他错误。目前,我无法将状态写入 excel 中的 OriginalZipcode 列。我写的代码是:
import pandas as pd
from pandas import ExcelWriter
from pandas import ExcelFile
import uszipcode as US
from uszipcode import ZipcodeSearchEngine
search = ZipcodeSearchEngine()
df = pd.read_excel("H:\excel\checking for zip and states\checkZipStates.xlsx", sheet_name='Sheet1')
#print(df.values)
for i, row in df.iterrows():
zipcode = search.by_zipcode(row['ZipCode']) #for searching zipcode
b = zipcode.State
df.at['row','OriginalState'] = b
df.to_excel("H:\\excel\\checking for zip and states\\new.xlsx", sheet_name = "compare", index = False)
excel表格是这样的格式:
| ZipCode |CurrentState | OriginalState |
|-----------|-----------------|---------------|
| 59714 | Montana | |
| 29620 | South Carolina | |
| 54405 | Wisconsin | |
| . | . | |
| . | . | |
【问题讨论】:
您将在每次循环迭代时保存您的 excel 文件。您可能想保存在循环之外。此外,出于所有意图和目的,您的邮政编码问题与您的问题无关。所以我会简化为只包括,例如,在字典中查找一个键或类似的东西。 @PaulH 由于我在循环中读取邮政编码,我不必每次迭代都将各自的状态写入 excel 文件吗? 我可以通过从 Excel 中读取邮政编码在输出控制台中打印状态。这意味着 for-loop 工作正常。但是,我不确定 df.at['row', 'OriginalState'] = b 是否是在 Excel 中写入单元格的正确方法。任何帮助将非常感激。谢谢!print(df)
在您的循环之外会告诉您这些值是否已正确分配
在df.at
: df.at[row,'OriginalState'] = b
中不引用row
【参考方案1】:
您可以在不迭代 df 的情况下添加 OriginalState 列:
定义一个函数,返回任何给定邮政编码所需的值:
def get_original_state(state):
zipcode = search.by_zipcode(state) #for searching zipcode
return zipcode.State
然后:
df['OriginalState'] = df.apply( lambda row: get_original_state(row['ZipCode']), axis=1)
最后,只导出一次 df 到 excel。
这应该可以解决问题。
【讨论】:
行得通,谢谢!现在,我将不得不深入了解 df.apply() 的用法以上是关于使用 pandas 在 python 中将值写入 excel的主要内容,如果未能解决你的问题,请参考以下文章
如何减少在 Amazon Redshift 中将 pandas 数据帧写入表的时间
Python Pandas - 如何在 Excel 工作表的特定列中写入
如何在 Python 中将数据集中的值添加到一起? [复制]