【发布时间】: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'已评估并失败,因为未为str和str定义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