【问题标题】:raise ValueError("Cannot convert {0!r} to Excel".format(value))raise ValueError("无法将 {0!r} 转换为 Excel".format(value))
【发布时间】:2020-04-29 05:08:42
【问题描述】:

我正在尝试使用 df.dropna 函数,我想使用符号“,”和或使用符号“|”多次嵌套它根据文档https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html#pandas.DataFrame.dropna。 在我的代码中,我将 csv 文件转换为 pandas,然后调整列中的数据

df = df[['Lastname', 'Firstname','Company','Title','Willing_to_share','Willing_to_introduce','work_phones','Work_email','Work_Street','Work_City','Work_State','Work_Zip','Personal_Street','Personal_City','Personal_State','Personal_Zip','mobile_phones','Personal_email','Note','Note_Category']]
##print(df)
## Lastname Firstname          Company Title Willing_to_share  \
0       Doe      Jane                                           
1   Malcoun       Joe  8/28/2019 14:29                          
2   Ramirez    Morgan                                           
3     Burki     Roman                                           
4      None    Jordan                                           
5      None                                                     
6  Zachuani     Reemo                                           
7    Suarez   Geraldo     
 Willing_to_introduce work_phones              Work_email  \
0                       5678743546        j@greenbriar.com   
1                             None        ceo@nutshell.com   
2                       3338765438      mramirez@nerdy.com   
3                       5468756098           burki@bvb.com   
4                             None  jordanw45490@gmail.com   
5                             None                   ronny   
6                             None                           
7                             None   

              Work_Street      Work_City Work_State Work_Zip Personal_Street  \
0        54 George street  Ridge Springs         VA    25678                   
1     212 South Fifth Ave      Ann Arbor         MI    48103                   
2              567 one st     Birmingham         AL    45678                   
3  546 fourteen street Nw         Dallas         TX    54678                   
4                                                                              
5                                                                              
6                                                                              
7       456 yellow street                                                      

  Personal_City Personal_State Personal_Zip mobile_phones Personal_email Note  \
0                                              3245687907                       
1                                                    None                       
2                                              6780431874                       
3                                              0983457690                       
4                                                    None                       
5                                                    None                       
6                                                    None                       
7                                                    None                       

  Note_Category  
0                
1                
2                
3                
4                
5                
6                
7                

我在 if 语句之前创建了工作簿

wb = Workbook()
ws = wb.active
wb.title = 'Contacts'
wb2 = Workbook()
ws2 = wb2.active
wb2.title = 'Contacts'

我将列标题放在函数中。我想要实现的是找到有效的行,这些行必须具有名字、姓氏和至少一个电话,或者任何类型(个人或工作)的地址或电子邮件不为空。然后我将把它放在一个excel数据表中。然后是第二个数据表中的函数的逆

r1 = df.dropna(subset=['Firstname', 'Lastname', ('work_phones' or 'mobile_phones') or (('Work_City','Work_Street','Work_State','Work_Zip') or ('Personal_Street','Personal_City','Personal_State','Personal_Zip')) or ('Work_email' or 'Personal_email')])

for r in dataframe_to_rows(r1, index=False, header=False):
   ws2.append(r)


wb.save("Accepted Contacts.xlsx")

但是当我运行它时我得到了这个错误

raise ValueError("Cannot convert {0!r} to Excel".format(value))



ValueError: Cannot convert ['Doe', 'Jane', nan, nan, nan, nan, '5678743546', 'j@greenbriar.com', '54 George street', 'Ridge Springs', 'VA', '25678', nan, nan, nan, nan, '3245687907', nan, nan, nan] to Excel

【问题讨论】:

  • subset 只能是一个类似数组的对象,其中包含您要考虑复制的标签。如果您想要一些更复杂的重复数据删除类型,在其中您考虑在任一字段中具有相同姓名和相同电话号码的人的重复,那么您需要在重复数据删除之前重塑您的数据。但同样,我不完全确定该语法试图暗示的 什么,所以我认为你应该创建一个 minimal reproducible example 并附上一个小例子,更好地描述你想要做什么以及该示例的预期输出。
  • 我忘了写我想要达到的目标。我的错误
  • 回答您收到的 TypeError:'a' | 'b' 已评估并失败,因为未为 strstr 定义 or
  • 我现在解决了 typeerror 问题。我有一个值错误,而不是引发 ValueError("Cannot convert {0!r} to Excel".format(value))
  • 尝试for r in dataframe_to_rows(r1.fillna('') ):删除nan值,

标签: python python-3.x pandas spyder


【解决方案1】:

我是 python 和学习基础知识的新手。我可能在以粗体突出显示的行中遇到相同的错误,我怀疑它与浮点转换有关。

代码只是通过乘以 90% 来转换列值并将 excel 保存在新工作表中

import openpyxl as xl
wb = xl.load_workbook('transactions.xlsx') # Load workbook excel
sheet = wb['Sheet1'] # Load Sheet in which you need to work
cell = sheet['a1']
cell = sheet.cell(1,1)

for row in range(2, sheet.max_row + 1):
    cell = sheet.cell(row, 3)
    corrected_price = cell.value * 0.9
    corrected_price_cell = sheet.cell(row, 4)
    **corrected_price_cell.value = corrected_price_cell**

# wb.save('transactions2.xlsx')

【讨论】:

  • 当您分享代码 sn-p 作为答案时,请尝试解释一下。
【解决方案2】:

所以我正在试验 SQL 和 openpyxl。今天我遇到了同样的错误。

对我来说,这是 SQL 解析我的数据的方式。因为我在 SQL 上有一些可变长度列表,所以 Excel 不知道将它们放在哪里。我解决了我的问题,弹出导致问题的数据并将其单独放置。请记住首先检查您的结果是什么类型的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2020-09-06
    • 2020-02-11
    相关资源
    最近更新 更多