[英]Python dataframe tranpose a single value from every nth row into a new column
我有这些交替的时间行,我希望时间并排,名称和值列总是多余的,所以我感兴趣的唯一值是通过将这些值转置为新列来保留时间列。 但我不知道如何优雅地做到这一点
前:
姓名 | 时间 | 价值 | 价值2 | |
---|---|---|---|---|
0 | 问 | 09:15 | 1 | |
1 | 问 | 09:16 | 0 | |
2 | 问 | 09:18 | 1 | |
3 | 问 | 09:19 | 0 | |
4 | 磷 | 22:30 | 1 | |
5 | 磷 | 23:20 | 0 |
后:
姓名 | 时间 | 价值 | 价值2 | |
---|---|---|---|---|
0 | 问 | 09:15 | 1 | 09:16 |
1 | 问 | 09:18 | 1 | 09:19 |
2 | 磷 | 23:20 | 1 | 23:20 |
这是一个适用于您的示例的解决方案。 在 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.