【发布时间】:2018-08-09 04:46:46
【问题描述】:
我有一个 CSV 文件,其中包含每个变量的 min 和 max 值,如下所示:
original = """
min_a max_a min_b max_b
3 5 1 9
"""
第一行按变量名排序,因此保证从min_a 到max_z。我想像这样重塑/融化它:
goal = """
min max
a 3 5
b 1 9
"""
我该怎么做?我觉得这里可以使用pandas.melt 或 numpy 方法,但不知道如何使用。我目前的“hack”是按如下方式重塑第二行值,然后将结果复制粘贴或写入 CSV:
orig = "3 5 1 9"
temp = orig.split()
chopped = [" ".join(temp[i:i+2]+["\n"]) for i in range(0,3,2)]
# chopped: ['3', '5', '1', '9']
ready = [" min max \n"] + [" ".join(e) for e in zip(['a','b'],chopped)]
# ready: [' min max \n', 'a 3 5 \n', 'b 1 9 \n']
flipped = "".join(ready)
# flipped: ' min max \na 3 5 \nb 1 9 \n'
print(flipped)
# Result:
# min max
# a 3 5
# b 1 9
有没有合适的方法来做到这一点?谢谢!
【问题讨论】:
标签: python string pandas csv numpy