【发布时间】:2020-11-04 00:23:35
【问题描述】:
我将 python 与 numpy 和 pandas 一起使用,我有一个如下所示的数据框:
index title Time Y
0 Part1 0.5 -117
1 Part1 1.0 -118
2 Part1 1.5 -137
3 Part1 2.0 -123
4 Part2 0.5 -97
5 Part2 1.0 -94
6 Part2 1.5 -95
7 Part2 2.0 -99
我希望它改变,以便我根据时间获得“第 1 部分”和“第 2 部分”的值......就像这样。
index title Time Part1 Part2
0 Part1 0.5 -117 -97
1 Part1 1.0 -118 -94
2 Part1 1.5 -137 -95
3 Part1 2.0 -123 -99
我实际上不需要索引或标题列。我只需要时间,第 1 部分和第 2 部分。
我尝试使用下面的代码制作两个较小的数据框并将它们连接起来,但我最终得到了这个:
a = df.loc[df['title'].str.contains('Part 1')]
b = df.loc[df['title'].str.contains('Part 2')]
c=pd.concat([a,b], axis=1)
index title Time Y title Time Y
0 Part1 0.5 -117 nan nan nan
1 Part1 1.0 -118 nan nan nan
2 Part1 1.5 -137 nan nan nan
3 Part1 2.0 -123 nan nan nan
4 nan nan nan Part2 0.5 -97
5 nan nan nan Part2 1.0 -94
6 nan nan nan Part2 1.5 -95
7 nan nan nan Part2 2.0 -99
有谁知道如何将其转换为格式,以便根据“时间”列中的匹配值显示 Y 值?我想我可以通过某种循环来做到这一点,但希望有一种更简单的方法,使用某种匹配或内置函数......
任何帮助表示赞赏!
更新!
a = a.drop(columns=['title'])
b = b.drop(columns=['title'])
c=pd.merge(a, b, on=['Time'])
这会创建一个以“时间,Y_x,Y_y”为标题的新表。不完美,因为“零件号”没有保留,但可以为我完成这项工作。
谢谢!
【问题讨论】:
标签: python pandas numpy dataframe