我有一个数据框,它的单词"截止日期"写得不同,但它的意思都是一样的.问题是在我的主数据(xls文件)中,一个到期日有额外的空间或没有,我无法更改.我所能改变的就是我的最终输出.

Sr no Due Date    Due Date   DueDate
1     1/2/22      
2                  1/5/22    
3
4                         
5                             ASAP

我只想让第二列和第三列在第一列的同一位置合并

Sr No.  Due Date
1        1/2/22
2        1/5/22
3        
4
5        ASAP

推荐答案

你可以用filter和正则表达式来得到相似的名字,然后用bfill得到第一个.最后,连接到没有找到列的原始列:

d = df.filter(regex=r'(?i)due\s*date')
df2 = (df
 .drop(columns=list(d.columns))
 .join(d.bfill(1).iloc[:,0])
 )

输出:

   Sr no Due Date
0      1   1/2/22
1      2   1/5/22
2      3     None
3      4     None
4      5     ASAP

Python相关问答推荐

取相框中一列的第二位数字

Python在通过Inbox调用时给出不同的响应

Pandas 按照特殊规则保留每n行

Pandas read_jsonfuture 警告:解析字符串时,to_datetime与单位的行为已被反对

symy.分段使用numpy数组

如何自动抓取以下CSV

根据在同一数据框中的查找向数据框添加值

如何避免Chained when/then分配中的Mypy不兼容类型警告?

如何使用html从excel中提取条件格式规则列表?

输出中带有南的亚麻神经网络

Pandas - groupby字符串字段并按时间范围 Select

try 将一行连接到Tensorflow中的矩阵

使用NeuralProphet绘制置信区间时出错

创建可序列化数据模型的最佳方法

改进大型数据集的框架性能

名为__main__. py的Python模块在导入时不运行'

dask无groupby(ddf. agg([min,max])?''''

通过追加列表以极向聚合

在Docker容器(Alpine)上运行的Python应用程序中读取. accdb数据库

30个非DATETIME天内的累计金额