我有以下 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) 我正在将 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 …
我有两个字符串列表:
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)会产生所需的结果