python: 将数据帧groupby写入文件
python: write a dataframe groupby to a file
我有一个包含以下内容的文件,我正在阅读 python
Item Master Primary Spec/Common Information/Contract Number||Contract Master Primary Spec/cage code
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8C1C2||N6247820D2401
8C1C2||N6247820D2401
8C1C2||N6247820D2401
我正在尝试统计合同数量。下面的代码在我打印时似乎有效(尽管 header 列由于某种原因被颠倒了),但当我尝试将其输出到文件时却无效。
import pandas as pd
fname="mdm.export.item.master.delta.1335.20220120011500_125_125.csv"
fdir="./data/"
df = pd.read_csv(fdir+fname, sep='\|\|', keep_default_na=False, engine='python')
uniqContract=df.groupby(['Item Master Primary Spec/Common Information/Contract Number']).count()
print(uniqContract)
file = open("testfile.txt","w")
for items in uniqContract:
file.writelines(items+'\n')
file.close()
这是打印输出
(base) PS D:-MyLocalFiles> python .\helloworld.py
Contract Master Primary Spec/cage code Item Master Primary Spec/Common Information/Con...
8AND3 5
8C1C2 3
(base) PS D:-MyLocalFiles\python\backlog_report>
但这是文件的输出
Contract Master Primary Spec/cage code
我做错了什么?
uniqContract
是一个数据框,当您遍历数据框时,它会遍历数据框列。 uniqContract
看起来像这样:
Contract Master Primary Spec/cage code
Item Master Primary Spec/Common Information/Con...
8AND3 5
8C1C2 3
...只有一列,所以这就是为什么您在文件中得到 Contract Master Primary Spec/cage code
。
uniqContract=df.groupby(['Item Master Primary Spec/Common Information/Contract Number']).count().reset_index()
uniqContract.to_csv('testfile.txt', delimiter='\t')
您可以在 groupby 计数聚合上调用 .reset_index()
,然后将其直接写入(文本)csv 文件。您可以指定分隔符(这是制表符)。
因为您正在使用 pandas.dataFrame read_csv
在没有索引列的情况下使用 pandas.dataFrame to_csv
,这样您就不会为每一行都获得额外的 ID。
uniqContract.to_csv("testfile.csv", index=False)
A link https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html
的文档
我有一个包含以下内容的文件,我正在阅读 python
Item Master Primary Spec/Common Information/Contract Number||Contract Master Primary Spec/cage code
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8AND3||SP47W117D0015
8C1C2||N6247820D2401
8C1C2||N6247820D2401
8C1C2||N6247820D2401
我正在尝试统计合同数量。下面的代码在我打印时似乎有效(尽管 header 列由于某种原因被颠倒了),但当我尝试将其输出到文件时却无效。
import pandas as pd
fname="mdm.export.item.master.delta.1335.20220120011500_125_125.csv"
fdir="./data/"
df = pd.read_csv(fdir+fname, sep='\|\|', keep_default_na=False, engine='python')
uniqContract=df.groupby(['Item Master Primary Spec/Common Information/Contract Number']).count()
print(uniqContract)
file = open("testfile.txt","w")
for items in uniqContract:
file.writelines(items+'\n')
file.close()
这是打印输出
(base) PS D:-MyLocalFiles> python .\helloworld.py
Contract Master Primary Spec/cage code Item Master Primary Spec/Common Information/Con...
8AND3 5
8C1C2 3
(base) PS D:-MyLocalFiles\python\backlog_report>
但这是文件的输出
Contract Master Primary Spec/cage code
我做错了什么?
uniqContract
是一个数据框,当您遍历数据框时,它会遍历数据框列。 uniqContract
看起来像这样:
Contract Master Primary Spec/cage code
Item Master Primary Spec/Common Information/Con...
8AND3 5
8C1C2 3
...只有一列,所以这就是为什么您在文件中得到 Contract Master Primary Spec/cage code
。
uniqContract=df.groupby(['Item Master Primary Spec/Common Information/Contract Number']).count().reset_index()
uniqContract.to_csv('testfile.txt', delimiter='\t')
您可以在 groupby 计数聚合上调用 .reset_index()
,然后将其直接写入(文本)csv 文件。您可以指定分隔符(这是制表符)。
因为您正在使用 pandas.dataFrame read_csv
在没有索引列的情况下使用 pandas.dataFrame to_csv
,这样您就不会为每一行都获得额外的 ID。
uniqContract.to_csv("testfile.csv", index=False)
A link https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html
的文档