我有两个输入文本文件,TestA.txt和TestB.txt。文件如下:
TestA.txt
ABA 50000 2.3
BAA 75000 1.75
BBA 100000 2
TEST 100000 2.4
TestB.txt
ABA 2.3 50000
BAA 1.75 75000
BBA 2 100000
TEST 2.4 100000
当我尝试一个一个地传递每个文件时,它在下面的代码中工作得很好。但是,当我同时传入两个文件时,它会跳转到else情况。
我试图写一个if else案例来解决这个问题,但是由于某种原因,如果文件没有单独传递,它会跳转到else案例而不是elif。
from pathlib import Path
import pandas as pd
df = pd.DataFrame()
folder = Path("C:\\Users\\Project")
for f in folder.glob("*.txt"):
with open(f) as fin:
chk_lst = next(fin).split()
is_h = not any(v[0].isdecimal() for v in chk_lst)
df = pd.concat([df, pd.read_csv(f, sep='\s+', header=None, skiprows=(0, 1)[is_h])], axis=0, ignore_index=True)
ticker = df[0].str.split()
mean1 = df[1].mean()
mean2 = df[2].mean()
pct_change = (100 * (mean2 - mean1)/mean1)
pct_change_flip = (100 * (mean1 - mean2)/mean2)
# print(pct_change)
if mean2 > mean1 and abs(pct_change_flip) > 95:
df = df[[0, 2, 1]]
df.columns = ['Identifier', 'Quantity', 'Rate']
print(df)
elif mean1 > mean2 and abs(pct_change) > 95:
df.columns = ['Identifier', 'Quantity', 'Rate']
print(df)
else:
print("Please conduct manual check of data.")
我的目标是尝试翻转所有进入的文件的索引,使其看起来像TestA.txt。这意味着,所有输出的第一列应具有标识符,第二列应具有较大的值,第三列应具有较小的速率值。
最终的情况应该是
Identifier Quantity Rate
ABA 50000 2.3
BAA 75000 1.75
BBA 100000 2
TEST 100000 2.4
Identifier Quantity Rate
ABA 50000 2.3
BAA 75000 1.75
BBA 100000 2
TEST 100000 2.4
答案 0 :(得分:0)
您可以使用pandas
的{{1}}函数在处理任何内容之前预先设置列索引。
loc