我是否使用循环 df.melt 或 df.explode 来实现扁平数据帧?
Do I use a loop, df.melt or df.explode to achieve a flattened dataframe?
任何人都可以提供一些代码来实现以下转换吗?我尝试了 df.melt
、df.explode
的变体以及循环语句,但只得到错误语句。我认为它可能需要嵌套,但没有这样做的经验。
index A B C D
0 X d 4 2
1 Y b 5 2
其中第 D
列表示第 C
列的频率。
期望的输出是:
index A B C
0 X d 4
1 X d 4
2 Y b 5
3 Y b 5
如果你想重复行,为什么不使用index.repeat
?
import pandas as pd
#recreate the sample dataframe
df = pd.DataFrame({"A":["X","Y"],"B":["d","b"],"C":[4,5],"D":[3,2]}, columns=list("ABCD"))
df = df.reindex(df.index.repeat(df["D"])).drop("D", 1).reset_index(drop=True)
print(df)
示例输出
A B C
0 X d 4
1 X d 4
2 X d 4
3 Y b 5
4 Y b 5
任何人都可以提供一些代码来实现以下转换吗?我尝试了 df.melt
、df.explode
的变体以及循环语句,但只得到错误语句。我认为它可能需要嵌套,但没有这样做的经验。
index A B C D
0 X d 4 2
1 Y b 5 2
其中第 D
列表示第 C
列的频率。
期望的输出是:
index A B C
0 X d 4
1 X d 4
2 Y b 5
3 Y b 5
如果你想重复行,为什么不使用index.repeat
?
import pandas as pd
#recreate the sample dataframe
df = pd.DataFrame({"A":["X","Y"],"B":["d","b"],"C":[4,5],"D":[3,2]}, columns=list("ABCD"))
df = df.reindex(df.index.repeat(df["D"])).drop("D", 1).reset_index(drop=True)
print(df)
示例输出
A B C
0 X d 4
1 X d 4
2 X d 4
3 Y b 5
4 Y b 5