Python 2.7 尝试使用python将CSV文件内容转换为所需格式
我正在尝试将CSV文件内容从格式A转换为格式B。我尝试了pandas、default dict、dict writer等,但无法理解。问题是它是水平打印,而不是垂直打印。请找到下面的例子 格式A: 项目为A列B列C列D列 84P37W265B3 B1 3970 99.82368 99.82368 0.07556675 84P37W265B3 B3 3960 95.10101 84P37W265B3 B5 3705 96.89609 96.89609 0.05398111 84P37W265B3 B6 3763 98.45868 98.45868 0.02657454 84P3XT135A4 B1 7904 99.73431 99.73431 0.02 84P3XT135A4 B3 7817 97.5694 100 0.01 格式B: 项目84P37W265B3 84P3XT135A4 多边环境协定B1 COL A 3970 7904 COL B 99.82368 99.73431 C列99.82368 99.73431 D列0.07556675 0.02 meas B3 B3 COL A 3960 7817 COL B 95.10101 97.5694 C-100列 D列-0.01 meas B5- COL A 3705- COL B 96.89609- C列96.89609- D列0.05398111- meas B6- COL A 3763- COL B 98.45868- COL C 98.45868- D列0.02657454- 有人能帮我吗,提前谢谢…你可以使用python 以下是将格式A转换为格式B的工作代码 检查输出:Python 2.7 尝试使用python将CSV文件内容转换为所需格式,python-2.7,pandas,Python 2.7,Pandas,我正在尝试将CSV文件内容从格式A转换为格式B。我尝试了pandas、default dict、dict writer等,但无法理解。问题是它是水平打印,而不是垂直打印。请找到下面的例子 格式A: 项目为A列B列C列D列 84P37W265B3 B1 3970 99.82368 99.82368 0.07556675 84P37W265B3 B3 3960 95.10101 84P37W265B3 B5 3705 96.89609 96.89609 0.05398111 84P37W265B3
Item 84P37W265B3 84P37W265B3 84P37W265B3 84P37W265B3 84P3XT135A4
meas B1 B3 B5 B6 B3
COL A 3970 3960 3705 3763 7817
COL B 99.82368 95.10101 96.89609 98.45868 97.5694
COL C 99.82368 96.89609 98.45868 100
COL D 0.07556675 0.05398111 0.02657454 0.01
您可以使用python
以下是将格式A转换为格式B的工作代码
检查输出:
Item 84P37W265B3 84P37W265B3 84P37W265B3 84P37W265B3 84P3XT135A4
meas B1 B3 B5 B6 B3
COL A 3970 3960 3705 3763 7817
COL B 99.82368 95.10101 96.89609 98.45868 97.5694
COL C 99.82368 96.89609 98.45868 100
COL D 0.07556675 0.05398111 0.02657454 0.01
我要感谢@cyclops的回复。请找到我的动态类型代码。用户不知道输入csv文件中的列数 代码:
这是工作,但请让我是任何其他简单的方法来做到这一点。提前谢谢。我要感谢@cyclops的回复。请找到我的动态类型代码。用户不知道输入csv文件中的列数 代码:
这是工作,但请让我是任何其他简单的方法来做到这一点。提前感谢。感谢您的回复,但输出文件中所有项目的最后一行值均为“84P3XT135A4 B3 7817 97.5694 100 0.01”。请在回答中检查我的输出。感谢您的回复,但输出是对应的最后一行值,它将保留前一行值。在输出中,它没有以下值。84P37W265B3 B1 3970 99.82368 99.82368 0.07556675 84P37W265B3 3960 95.10101 84P37W265B3 B5 3705 96.89609 96.89609 0.05398111 84P37W265B3 B6 3763 98.45868 0.02657454 84P3XT135A4 B1 7904 99.73431 99.73431 0.02非常感谢您的回复,它正在工作。这是静态的,如果是动态的,如何处理。我的意思是,我们不知道输入csv文件中的列数。感谢您的回复,但输出文件对所有项目只有最后一行值“84P3XT135A4 B3 7817 97.5694 100 0.01”。请在回答中检查我的输出。感谢您的回复,但输出是对应的最后一行值,它保留了前一行值。在输出中,它没有以下值。84P37W265B3 B1 3970 99.82368 99.82368 0.07556675 84P37W265B3 3960 95.10101 84P37W265B3 B5 3705 96.89609 96.89609 0.05398111 84P37W265B3 B6 3763 98.45868 0.02657454 84P3XT135A4 B1 7904 99.73431 99.73431 0.02非常感谢您的回复,它正在工作。这是静态的,如果是动态的,如何处理。我的意思是,我们不知道输入csv文件中的列数。@cyclops:我希望,除了“item”和“meas”,我没有分配任何内容。所以我的意思是动态的,sry,如果假设错误的话。之所以这样做是因为我需要该项作为列标题。对于格式B中所示的项目,是否可以将B1置于B3之下B5之下B6之下?@cyclops:我希望,除了“项目”和“多边环境协定”,我没有分配任何内容。所以我的意思是动态的,sry,如果假设错误的话。之所以这样做是因为我需要该项作为列标题。对于格式B中所示的项目,是否可以将B1置于B3之下B5之下B6之下?
import csv
from collections import defaultdict
column_header=[]
columns = defaultdict(list)
with open('C:\outfile4.csv') as f:
reader = csv.DictReader(f)
for row in reader:
for (k,v) in row.items():
columns[k].append(v)
b_csv = r'C:\outfile5.csv'
with open(b_csv, 'w') as csvfile:
writer = csv.writer(csvfile, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for key,values in sorted(columns.iteritems()):
if key == 'item':
writer.writerow([key]+values)
for key,values in sorted(columns.iteritems()):
if key == 'meas':
writer.writerow([key]+values)
for key,values in sorted(columns.iteritems()):
if key != 'item' and key != 'meas':
writer.writerow([key]+values)