小编bk_*_*bk_的帖子

确定 Pandas Dataframe 中的列是否包含 DATE 或 DATETIME 信息的最简单方法

我有以下 DF:

  col1         col2
1 2017-01-03   2018-03-30 08:01:32
2 2017-01-04   2018-03-30 08:02:32
Run Code Online (Sandbox Code Playgroud)

如果我这样做df.dtypes,我会得到以下输出:

col1    datetime64[ns]
col2    datetime64[ns]
dtype: object
Run Code Online (Sandbox Code Playgroud)

然而mcol1只包含日期信息(DATE),而col2包含日期和时间信息(DATETIME)。

确定列是否包含 DATE 或 DATETIME 信息的最简单方法是什么?

数据生成:

import pandas as pd

# Generate the df
col1 = ["2017-01-03", "2017-01-04"]
col2 = ["2018-03-30 08:01:32", "2018-03-30 08:02:32"]

df = pd.DataFrame({"col1": col1, "col2": col2})

df["col1"] = pd.to_datetime(df["col1"])
df["col2"] = pd.to_datetime(df["col2"])
Run Code Online (Sandbox Code Playgroud)

python datetime dataframe pandas

5
推荐指数
1
解决办法
180
查看次数

如何将DataFrame转换为xlsx文件而不保存它?

我正在将 Excel 文件作为 DataFrame 加载,进行一些转换,然后我想将 Excel 文件保存到某个服务器(不是本地)。

目前,我可以采取一种解决方法来实现这一目标:

import pandas as pd
import requests

df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)

# Store DataFrame locally
df.to_excel("outputfile.xlsx")

# re-read locally stored file und upload it
with open("outputfile.xlsx", "rb") as fin:
        requests.put("url/outputfile.xlsx",
                     data=fin.read(),
                     auth=auth,
                     headers={'content-type': 'application/vnd.ms-excel'})
Run Code Online (Sandbox Code Playgroud)

即我将转换后的 DataFrame 保存在本地,然后将本地副本上传到服务器。是否可以将 df 直接转换为 Excel 文件,而无需在本地存储和重新加载?我必须如何修改 requests.put 语句?

在@Aryerez的暗示下,我尝试了

df = pd.read_excel("file.xlsx")
df = do_some_transformation(df)

writer = pd.ExcelWriter("file.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')

requests.put("url/outputfile.xlsx",
                     data=writer,
                     auth=auth,
                     headers={'content-type': 'application/vnd.ms-excel'}),
                     
Run Code Online (Sandbox Code Playgroud)

这会导致TypeError: '_XlsxWriter' object is not iterable.

如何将 pandas …

python excel dataframe pandas python-requests

4
推荐指数
1
解决办法
5297
查看次数

形成两个字符串列表的笛卡尔积的最 Pythonic 方法

我有两个字符串列表:

l1 = ["Col1", "Col2", "Col3"]
l2 = ["_ad1", "_ad2"]
Run Code Online (Sandbox Code Playgroud)

我想将两个列表l1x的笛卡尔积/串联l2成一个元素,即我想要的结果是:

["Col1_ad1", "Col1_ad2", "Col2_ad1", "Col2_ad2", "Col3_ad1", "Col1_ad1"]
Run Code Online (Sandbox Code Playgroud)

当然我可以这样做:

result = []
for colname in l1:
    for suffix in l2:
        result.append(f"{colname}{suffix}")
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更Pythonic的方式?

编辑:我并不是在寻找一种更Pythonic的方式来制定循环(即列表理解)。相反,我正在寻找一个内置函数,类似的函数 concatenate(l1, l2)会产生所需的结果

python string list concatenation cartesian-product

2
推荐指数
1
解决办法
106
查看次数