【问题标题】:Python dataframe tranpose a single value from every nth row into a new columnPython数据框将每第n行的单个值转换为新列
【发布时间】:2022-06-16 01:55:42
【问题描述】:

我有这些交替的时间行,我希望时间并排,名称和值列总是多余的,所以我感兴趣的唯一值是通过将这些值转置为新列来保留时间列。但我不太明白如何优雅地做到这一点

之前:

Name Time Value Value2
0 Q 09:15 1
1 Q 09:16 0
2 Q 09:18 1
3 Q 09:19 0
4 P 22:30 1
5 P 23:20 0

之后:

Name Time Value Value2
0 Q 09:15 1 09:16
1 Q 09:18 1 09:19
2 P 23:20 1 23:20

【问题讨论】:

  • 中的冗余值总是0?是否总是一个值为 1,一个值为 0。或者是否有可能有两个连续的 1?基本上我在问是否有可能存在 Value3 列?

标签: python pandas dataframe numpy


【解决方案1】:

这是一个适用于您的示例的解决方案。在 df1 你有输出

import pandas as pd


df=pd.DataFrame({
    "Name":["Q"  ,"Q" ,"Q" ,"Q" ,"P" ,"P"],
    "Time":["09:15", "09:16", "09:18", "09:19", "22:30", "23:20"],
    "Value":[1 ,0 ,1 ,0 ,1 ,0],
    "Value2":[None,None,None,None,None,None]})

df1=df.loc[df["Value"]!=0]
df2=df.loc[df["Value"]==0]
df2.index=df1.index
df1=df1.drop(columns=["Value2"])

df2=df2.drop(columns=["Name","Value","Value2"])
df2=df2.rename(columns={"Time":"Value2"})

df1=df1.join(df2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多