我在一个数据框中附加了多个文本文件。出于某种原因(我不完全理解),列名会随着时间的推移而略有变化,但它们实际上是一样的。这里有一个例子
['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!')
这里有两种可能的解决方案:首先,如果列顺序始终相同,则可以在堆叠之前设置列名
df.columns = all_df.columns
其次,如果更改总是像“_1”一样简单,并且如果该子字符串没有出现在任何其他位置,则可以在列名中使用
.replace('_1', '')
子字符串。类似于df.columns = [x.replace('_1', '') for x in df.columns]
的东西除此之外,你可能还得用模糊字符串匹配来做一些更有趣的事情
相关问题 更多 >
编程相关推荐