使用Python将转换为日和月的列值替换为文本

kb5ga3dv  于 2022-12-02  发布在  Python
关注(0)|答案(2)|浏览(140)

在Python中如何实现这一点?源文件是一个CSV文件,文件中一列的值从数字转换为日和月。非常感谢您提前。
示例如下:
栏目图片:room column
在我的python脚本中,value应该如下所示:

1-Feb ---> 2-1
2-Feb ---> 2-2
3-Mar ---> 3-3
4-Mar ---> 3-4

这是我的剧本

import os
import pandas as pd

directory = 'C:/Path'
ext = ('.csv')

for filename in os.listdir(directory):
f = os.path.join(directory, filename)

if f.endswith(ext):

    head_tail = os.path.split(f)
    head_tail1 = 'C:/Path'
    k =head_tail[1]
    r=k.split(".")[0]

    p=head_tail1 + "/" + r + " - Revised.csv"
    mydata = pd.read_csv(f)

    # to pull columns and values
    new = mydata[["A","Room","C","D"]]
    new = new.rename(columns={'D': 'Qty. of Parts'})
    new['Qty. of Parts'] = 1
    new.to_csv(p ,index=False)

    #to merge columns and values
    merge_columns = ['A', 'Room', 'C']
    merged_col = ''.join(merge_columns).replace('ARoomC', 'F')
    new[merged_col] = new[merge_columns].apply(lambda x: '.'.join(x), axis=1)

    new.drop(merge_columns, axis=1, inplace=True)
    new = new.groupby(merged_col).count().reset_index()
    new.to_csv(p, index=False)
klh5stk1

klh5stk11#

如果要将字符串转换为日期以便以后获取值

import datetime
# datetime.datetime(1900, 2, 1, 0, 0)
d = datetime.datetime.strptime("1-Feb", "%d-%b")
print(f'{d.month}-{d.day}')

实验结果:

2-1
xpszyzbs

xpszyzbs2#

您可以使用pandas.to_datetime

new["Room"]= (
                pd.to_datetime(new["Room"], format="%d-%b", errors="coerce")
                    .dt.strftime("%#m-%#d")
                    .fillna(new["Room"])
                )

示例:

col
0  1-Feb
1  2-Feb
2  3-Mar
3    2-1

提供:

col
0  2-1
1  2-2
2  3-3
3  2-1
  • 注意:如果你遇到错误,你需要给予一个最小的可重现的例子,以显示如何看起来像你的原始(.csv)在文本编辑器中打开,而不是在Excel中。*

相关问题