从数据帧列 python 中删除前导撇号

Remove the leading apostrophe from dataframe column python

提问人:sandibaeva52 提问时间:3/8/2023 最后编辑:sandibaeva52 更新时间:3/8/2023 访问量:282

问:

我有一个数据帧,我使用 python 脚本将其上传到谷歌表格。具体来说,我的目标是使用查询获得按此谷歌表格电子表格中的日期范围过滤的一列的总和。 在电子表格中,如果单击 orderDate 的日期列,则该列具有前导撇号(请参阅随附的 img)。我尝试了所有方法,如 strip()、replace()、lambda 函数和正则表达式,但没有一个有效。在列的情况下,它起作用了,因为它是一个整数。这是 python 中的代码。orderLineQuantity.amount

df_orders['orderDate']=df_orders['orderDate'].apply(lambda d: datetime.datetime.fromtimestamp(int(d)/1000).strftime('%Y-%m-%d %H:%M:%S'))
df_orders['orderDate'] = df_orders['orderDate'].apply(lambda x: str(x).replace("'", ""))

df_orders['orderLineQuantity.amount'] = df_orders['orderLineQuantity.amount'].str.replace(r"[\"\',]", '')
df_orders['orderLineQuantity.amount'] = df_orders['orderLineQuantity.amount'].astype(int)

这是我的查询,但它向我抛出了 #N/A 错误:查询已完成,输出为空。

=QUERY(IMPORTRANGE("link_to_the_Spreadsheet", "ORDERS!A2:J"), "SELECT SUM(Col6) WHERE Col1 >= date '2023-03-01' AND Col1 <= date '2023-03-05' LABEL SUM(Col6) ''")

我认为问题出在列的数据类型上?它有日期和时间,但我只想按日期过滤。我在想,如果我设法从列中删除撇号,谷歌表格会将其识别为日期,而不是文本。orderDateorderDateenter image description here

请帮我解决这个问题,我已经尝试了很多方法,现在我被卡住了。任何帮助都是值得赞赏的。

python 熊猫 字符串 datetime google-sheets

评论

4赞 Tim Roberts 3/8/2023
在第二行中专门将列转换为字符串。如果单元格是字符串,Google(如 Excel)会向您显示一个撇号。撇号显然不在您正在创建的数据中。如果您不希望它成为字符串,则不要进行该转换。
0赞 sandibaeva52 3/8/2023
@TimRoberts 谢谢你的澄清。我删除了第二行,并通过添加 help 来更新下面的行。value_input_option='USER_ENTERED' worksheet.update([df_orders.columns.values.tolist()] + df_orders.values.tolist(), value_input_option='USER_ENTERED')
0赞 FObersteiner 3/8/2023
实际上,您在示例的第一行代码中创建了一个数据类型字符串的列(顺便说一句,您可以使用pd.to_datetime进行简化)。第二行实际上什么都不做。除了显示的撇号外,实际上将日期/时间格式化为文本也会有所帮助,即当您不希望 Excel 等弄乱它时。

答:

1赞 kevin wu 3/8/2023 #1
df['orderdate'] = pd.to_datetime(df['orderdate'])

df['orderdate'] = pd.to_datetime(df['orderdate'], format="'%Y-%m-%d %H:%M:%S")