我有一个巨大的csv文件格式
http://i.stack.imgur.com/ksQzS.png
我想以这种格式对其进行改编 我尝试了很多,但无法实现它。有什么方法我可以用awk做。 该文件包含数千条记录
答案 0 :(得分:2)
我的awk
技能更多"功能性"优雅"但这可能会让你开始
awk -F'|' '{for(f=1;f<=NF;f++){x[NR subsep f]=$f}} END{for(f=1;f<=NF;f++){p="";for(r=1;r<=NR;r++){if(length(p))p=p "|";p=p x[r subsep f]}print p}}' file.csv
r1f1|r2f1|r3f1
r1f2|r2f2|r3f2
r1f3|r2f3|r3f3
r1f4|r2f4|r3f4
r1f5|r2f5|r3f5
<强> FILE.CSV 强>
r1f1|r1f2|r1f3|r1f4|r1f5
r2f1|r2f2|r2f3|r2f4|r2f5
r3f1|r3f2|r3f3|r3f4|r3f5
因此,对于inout文件的每一行,字段都保存为一个名为x[]
的二维数组,由行号(NR)和字段编号(1..NF)索引。在输入文件的末尾,在END{}
内,我遍历文件中的字段数和记录数,并打印出转置,如果需要,在我去的时候添加管道符号。
答案 1 :(得分:1)
不幸的是,我不知道如何在awk中这样做。但是,如果您不介意使用Python,这种数据重塑很简单。例如:
QueryRequest existUserStoryRequest = new QueryRequest("HierarchicalRequirement");
existUserStoryRequest.setFetch(new Fetch("FormattedID","Name","Attachments"));
existUserStoryRequest.setQueryFilter(new QueryFilter("FormattedID", "=", existStoryFormattedID));
QueryResponse userStoryQueryResponse = restApi.query(existUserStoryRequest);
JsonObject existUserStoryJsonObject = userStoryQueryResponse.getResults().get(0).getAsJsonObject();
String existUserStoryRef = userStoryQueryResponse.getResults().get(0).getAsJsonObject().get("_ref").toString();
JsonArray attachmentsJsonArray = existUserStoryJsonObject.getAsJsonArray("Attachments");
import scipy, pandas
df = pandas.DataFrame({
"s1_x": scipy.randn(10),
"s1_y": scipy.randn(10),
"s2_x": scipy.randn(10),
"s2_y": scipy.randn(10)
})
最初的形状如下:
df
但如果你使用 s1_x s1_y s2_x s2_y
0 -0.075796 2.191362 -0.960267 0.619519
1 -1.201713 0.015710 0.121307 -0.273759
2 -0.549812 1.089105 -0.525985 1.383265
,它就变成了:
df.stack()