【问题标题】:How to move array values to a new column, based on duplicate values in a different column如何根据不同列中的重复值将数组值移动到新列
【发布时间】: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


    【解决方案1】:

    我认为你需要使用pivot 方法:

    df.pivot(index="time", columns=["title"]).reset_index()
    

    您可以在pandas official docs 中找到更多相关信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 2018-05-27
      相关资源
      最近更新 更多