gpt4 book ai didi

python - 使用 Pandas 将列转换为行

转载 作者:太空宇宙 更新时间:2023-11-03 20:05:57 25 4
gpt4 key购买 nike

所以我的数据集包含 n 个日期的一些位置信息。问题是每个日期实际上是不同的列标题。例如,CSV 看起来像

location    name    Jan-2010    Feb-2010    March-2010
A "test" 12 20 30
B "foo" 18 20 25

我想要的是它看起来像

location    name    Date        Value
A "test" Jan-2010 12
A "test" Feb-2010 20
A "test" March-2010 30
B "foo" Jan-2010 18
B "foo" Feb-2010 20
B "foo" March-2010 25

我的问题是我不知道该列中有多少个日期(尽管我知道它们总是在名称之后开始)

最佳答案

更新
从 v0.20 开始,melt是一阶函数,您现在可以使用

df.melt(id_vars=["location", "name"], 
var_name="Date",
value_name="Value")

location name Date Value
0 A "test" Jan-2010 12
1 B "foo" Jan-2010 18
2 A "test" Feb-2010 20
3 B "foo" Feb-2010 20
4 A "test" March-2010 30
5 B "foo" March-2010 25
<小时/>

旧(ER)版本:<0.20

您可以使用pd.melt到达那里的大部分路径,然后排序:

>>> df
location name Jan-2010 Feb-2010 March-2010
0 A test 12 20 30
1 B foo 18 20 25
>>> df2 = pd.melt(df, id_vars=["location", "name"],
var_name="Date", value_name="Value")
>>> df2
location name Date Value
0 A test Jan-2010 12
1 B foo Jan-2010 18
2 A test Feb-2010 20
3 B foo Feb-2010 20
4 A test March-2010 30
5 B foo March-2010 25
>>> df2 = df2.sort(["location", "name"])
>>> df2
location name Date Value
0 A test Jan-2010 12
2 A test Feb-2010 20
4 A test March-2010 30
1 B foo Jan-2010 18
3 B foo Feb-2010 20
5 B foo March-2010 25

(可能需要添加 .reset_index(drop=True),只是为了保持输出干净。)

注意:pd.DataFrame.sort has been deprecated支持pd.DataFrame.sort_values .

关于python - 使用 Pandas 将列转换为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com