linux系统 如何实现将文本文件的两列交换顺序 分隔符是tab

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux系统 如何实现将文本文件的两列交换顺序 分隔符是tab相关的知识,希望对你有一定的参考价值。

列与列之前的分隔符是tab

参考技术A awk 'print $2,$1' test.txt

如何将一列中的两列合并为日期与熊猫?

【中文标题】如何将一列中的两列合并为日期与熊猫?【英文标题】:how to merge two columns in one column as date with pandas? 【发布时间】:2020-03-05 00:37:11 【问题描述】:

我有一个 csv,第一列是日期,第五列是小时。 我想将它们合并到具有特定格式的单列中,以便编写另一个 csv 文件。

这基本上是文件:

DATE,DAY.WEEK,DUMMY.WEEKENDS.HOLIDAYS,DUMMY.MONDAY,HOUR 
01/01/2015,5,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,3,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,4,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,5,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,6,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,7,1,0,0,0,0,0,0,0,0,0,0,0
01/01/2015,5,1,0,8,1,0,0,0,0,0,0,0,0,0,0,0

我尝试将数据框读取为

dataR = pd.read_csv(fnamecsv) 

并将第一行转换为日期,如:

date_dt3 = datetime.strptime(dataR["DATE"].iloc[0], '%d/%m/%Y')

但是,在我看来,这不是正确的方法,原因有两个:

1) 它在不考虑小时列的情况下添加小时;

2) 好像没有使用 pandas 功能。

感谢您的任何帮助,

迪德罗

【问题讨论】:

【参考方案1】:

使用 + 运算符

您需要在加入前将数据框元素转换为字符串。您还可以在加入期间使用不同的分隔符,例如破折号、下划线或空格。

import pandas as pd 

df = pd.DataFrame('Last': ['something', 'you', 'want'], 
                   'First': ['merge', 'with', 'this']) 

print('Before Join') 
print(df, '\n') 

print('After join') 
df['Name']= df["First"].astype(str) +" "+ df["Last"] 
print(df) ```

【讨论】:

【参考方案2】:

您可以使用read_csv 和参数parse_dates 以及列名列表和date_parser 指定格式:

f = lambda x: pd.to_datetime(x, format='%d/%m/%Y %H')
dataR = pd.read_csv(fnamecsv, parse_dates=[['DATE','HOUR']], date_parser=f)

或将小时数转换为时间增量并稍后添加到日期时间:

dataR = pd.read_csv(fnamecsv, parse_dates=[0], dayfirst=True) 
dataR['DATE'] += pd.to_timedelta(dataR.pop('HOUR'), unit='H')

【讨论】:

以上是关于linux系统 如何实现将文本文件的两列交换顺序 分隔符是tab的主要内容,如果未能解决你的问题,请参考以下文章

python交换数据的两列

如何将一列中的两列合并为日期与熊猫?

连接单独处理的火花数据帧的两列时的顺序保证是啥?

如何将 DataFrame(包括数组)中的两列与 CSV(Dataframe/Dictionary)中的两列匹配

excel两列乱序姓名一一对应

如何通过 CSS 实现一个左边固定宽度右边自适应的两列布局