我们可以将类似的命名列附加到一个列上吗?

2024-04-26 13:46:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个数据框中附加了多个文本文件。出于某种原因(我不完全理解),列名会随着时间的推移而略有变化,但它们实际上是一样的。这里有一个例子

['ACCEPTANCES_EXECUTED_FOR_ACCT____OUT',
 'ACCEPTANCES_EXECUTED_FOR_ACCT____OUT_1',
 'ACCUMULATED_OTH_COMPREHENSIVE_INCOME',
 'ACCUMULATED_OTH_COMPREHENSIVE_INCOME_1',
 'ALLL_AMT',
 'ALLL_AMT_1',
 'AUDIT_INDICATOR',
 'AUDIT_INDICATOR_1',
 'AVAILABLE_FOR_SALE_SECURITIES',
 'AVAILABLE_FOR_SALE_SECURITIES_1',
 'COMMON_STOCK',
 'COMMON_STOCK_1',
 file]

我知道{}和{}是一样的。类似地,'ACCUMULATED_OTH_COMPREHENSIVE_INCOME''ACCUMULATED_OTH_COMPREHENSIVE_INCOME_1'是相同的

是否有方法将名为'ACCEPTANCES_EXECUTED_FOR_ACCT____OUT_1'的字段追加到名为'ACCEPTANCES_EXECUTED_FOR_ACCT____OUT'的字段下,然后删除'ACCEPTANCES_EXECUTED_FOR_ACCT____OUT_1'

或者,我的附加是否可能有问题?我认为这只是一个标准的附加过程

try:
    df = pd.DataFrame()
    df = pd.read_csv(f, delimiter='\t', skiprows=1) 
    df['file'] = os.path.basename(f)
    all_df[x].append(df) 
except:
    print(f + ' seems to have some bad data points. please check and confirm!')

1条回答
网友
1楼 · 发布于 2024-04-26 13:46:52

这里有两种可能的解决方案:首先,如果列顺序始终相同,则可以在堆叠之前设置列名df.columns = all_df.columns

其次,如果更改总是像“_1”一样简单,并且如果该子字符串没有出现在任何其他位置,则可以在列名中使用.replace('_1', '')子字符串。类似于df.columns = [x.replace('_1', '') for x in df.columns]的东西

除此之外,你可能还得用模糊字符串匹配来做一些更有趣的事情

相关问题 更多 >