小编mat*_*ver的帖子

Python/Pandas:如何从 datetime64[ns] 转换为 datetime

我有一个处理 Excel 文件的脚本。发送它的部门有一个生成它的系统,我的脚本停止工作。

我突然收到Can only use .str accessor with string values, which use np.object_ dtype in pandas以下代码行的错误:

df['DATE'] = df['Date'].str.replace(r'[^a-zA-Z0-9\._/-]', '')
Run Code Online (Sandbox Code Playgroud)

我检查了旧系统文件中日期列的类型(dtype:object)与来自新系统的文件(dtype:datetime64[ns])。

如何将日期格式更改为我的脚本可以理解的格式?

我看到了这个答案,但我对日期格式的了解并不是那么精细。

datetime python-2.7 pandas datetime64

5
推荐指数
3
解决办法
3万
查看次数

在python pandas中编写csv,需要更改列的顺序并添加空白列

我已经将一个 csv 文件导入到 python 中,并且我正在使用 Pandas。我需要输出一个仅包含部分数据的新 csv 文件,并以不同的顺序使用空白列。新的csv文件将用于将数据从一个系统导入,数据需要排队。

因此,如果原始 csv 文件具有以下列

"date" "department" "name" "title" "employee id"
Run Code Online (Sandbox Code Playgroud)

我需要读取 csv 文件的行

"name",,,,,"department",,,,"date",,
Run Code Online (Sandbox Code Playgroud)

我删除了不需要的列:

del df["title"],def["employee id"]
Run Code Online (Sandbox Code Playgroud)

我写了一堆空白列:

df[a] = '';
df[b] = '';
df[c] = '';
Run Code Online (Sandbox Code Playgroud)

当我按照我想要的顺序将它们写入 csv 时

df.to_csv('outfile.csv', cols=["name","a","b","c","department","d","e","f","date","g","h"], index=False,header=False)
Run Code Online (Sandbox Code Playgroud)

它出来了

date,department,,,,,,,,,,,name,,
Run Code Online (Sandbox Code Playgroud)

我应该为这种特定类型的项目使用 csv 模块吗?我正在浏览文档,但无法弄清楚我正在阅读的内容如何适用于我的任务

csv python-2.7 pandas columnsorting

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

使用熊猫在csv中格​​式化电话号码

Python/熊猫 n00b。我有处理存储在 csv 文件中的事件数据的代码。数据来自df["CONTACT PHONE NUMBER"]将电话号码输出为`5555551212.0' 显然,“.0”是一个问题,但添加是因为它是一个整数,我想?

Anyhoo,为了可用性,我决定我应该格式化电话号码。

该数字来自未格式化的 csv 文件。该数字始终为十位数:5555551212,但我想将其显示为 (555)555-1212。

import glob
import os
import pandas as pd
import sys

csvfiles = os.path.join(directory, '*.csv')
for csvfile in glob.glob(csvfiles):
    df = pd.read_csv(filename)
    #formatting the contact phone
    phone_nos = df["CONTACT PHONE NUMBER"]
    for phone_no in phone_nos:
        contactphone = "(%c%c%c)%c%c%c-%c%c%c%c" % tuple(map(ord,phone_no))
Run Code Online (Sandbox Code Playgroud)

最后一行给了我以下错误: not enough arguments for format string

但也许这不是熊猫的做法。由于我正在遍历数组,因此我还需要将数据保存在其现有列中或在处理电话号码后重建该列。

python csv formatting phone-number pandas

3
推荐指数
1
解决办法
7833
查看次数

python/pandas:需要帮助为列添加双引号

我需要在我的脚本生成的csv文件中的特定列中添加双引号.

以下是我想到的这种愚蠢的方式.对于这两个固定宽度的字段,它的工作原理是:

df['DATE'] = df['DATE'].str.ljust(9,'"')
df['DATE'] = df['DATE'].str.rjust(10,'"')

df['DEPT CODE'] = df['DEPT CODE'].str.ljust(15,'"')
df[DEPT CODE'] = df['DEPT CODE'].str.rjust(16,'"')
Run Code Online (Sandbox Code Playgroud)

对于以下字段,它不会.它有一个可变长度.因此,如果该值短于标准的6位数,我会得到额外的双引号:"5673"""

df['ID'] = df['ID'].str.ljust(7,'"')
df['ID'] = df['ID'].str.rjust(8,'"')
Run Code Online (Sandbox Code Playgroud)

我试过zfill,但是列中的数据是一个系列 - 当我运行时,我得到"pandas.core.series.Series"

print type(df['ID'])
Run Code Online (Sandbox Code Playgroud)

我无法使用astype将其转换为字符串.我不知道为什么.我没有进口numpy.

我尝试使用len()来获取ID号的长度,并将其作为第一个参数传递给str.ljust和str.rjust,但我认为它挂起的数据不是字符串.

是否有一种更简单的方法可以根据需要应用双引号,还是zfill将成为可行的方法?

csv numpy python-2.7 double-quotes

3
推荐指数
1
解决办法
7759
查看次数