python - 在 python 中使用 pandas 创建多个输出文件
问题描述
以下代码检查 SampleData.txt 并生成 Result1.txt。我想从仅包含 1 列的相同数据创建另一个文件 Result2.txt。我是熊猫新手,不知道需要修改什么来创建 Result2.txt
import pandas as pd
from tabulate import tabulate
dl = []
with open('SampleData.txt', encoding='utf8', errors='ignore') as f:
for line in f:
parts = line.split()
if not parts[3][:2].startswith('($'):
parts.insert(3,'0')
if len(parts) > 5:
temp = ' '.join(parts[4:])
parts = parts[:4] + [temp]
parts[1] = int(parts[1])
parts[2] = float(parts[2].replace(',', ''))
parts[3] = float(parts[3].strip('($)').replace(',', ''))
dl.append(parts)
headers = ['ID', 'TRANS', 'VALUE', 'AMOUNT', 'CODE']
df = pd.DataFrame(dl,columns=headers)
pd.set_option('colheader_justify', 'center')
df = df.groupby(['ID','CODE']).sum().reset_index().round(2)
df = df.sort_values('TRANS',ascending=False)
df['AMOUNT'] = '($' + df['AMOUNT'].astype(str) + ')'
df = df[headers]
print (df.head(n=40).to_string(index=False))
print()
df.to_csv("Out1.txt", sep="\t", index=None, header=None)
样本数据.txt
0xdata1 1 2,200,000 test1(test1)
0xdata2 1 9,500,000,000 ($70.30) test2(test2)
0xdata3 1 4.6 ($14.08) test3(test3)
0xdata4 1 0.24632941 test4(test4)
0xdata5 1 880,000,000 ($1.94) test5(test5)
Result1.txt #-- 正常工作
0xdata1 1 2,200,000 test1(test1)
0xdata2 1 9,500,000,000 ($70.30) test2(test2)
0xdata3 1 4.6 ($14.08) test3(test3)
0xdata4 1 0.24632941 test4(test4)
0xdata5 1 880,000,000 ($1.94) test5(test5)
Result2.txt #-- 需要的额外输出以及我想要生成的内容
0xdata1
0xdata2
0xdata3
0xdata4
0xdata5
解决方案
您可以只选择要保存的列,以防万一
df['ID'].to_csv("Out_ID.txt", sep="\t", index=None, header=None)
这应该可以解决您的问题!
推荐阅读
- typescript - VS Code 中类似 WebStorm 的 TypeScript 方法覆盖
- java - 如何使用 Java 计算给定字符串的子字符串中的总元音?
- flutter - 如何在 Firestore 中过滤特定文档的 Stream 客户端?
- google-apps-script - 我如何告诉应用脚本“进入下面的行”?
- javascript - 如何将所有文件 SRC 属性值重命名为小写?
- jquery - 如何添加到可与分页一起使用的表头动态数据行?
- java - 使用另一个类的方法的片段问题,Android Studio
- pandas - ImportError:DLL 加载失败:找不到指定的模块
- c# - Unity 3D 中的玩家移动
- java - 如何在 java swing 应用程序的按钮中运行一个类