我有一个关于合并多个数据帧和添加一列假人的问题
现在我有两个原始的输入数据帧。第一个数据框回答的问题是“你最喜欢哪种颜色?”第二个数据框回答的问题是“在1到7的范围内,你在多大程度上不喜欢这种颜色?”
df1 = pd.DataFrame({'id': ['01','02'],
'like_wave_1': ['red','red'],
'like_wave_2': ['red','yellow']})
print(df1)
df2 = pd.DataFrame({'id': ['01','02'],
'dislike_wave1_yellow': ['7','2'],
'dislike_wave1_red':['1','1'],
'dislike_wave1_blue':['2','7'],
'dislike_wave2_yellow': ['7','1'],
'dislike_wave2_red':['1','2'],
'dislike_wave2_blue':['3','7']})
print(df2)
下面的dataframe构造了预期输出dataframe的概要
list_id = ['01','02']
list_color = ['yellow','red','blue']
list_wave = ['1','2']
expand = list(product(list_id, list_color, list_wave))
df = pd.DataFrame.from_records(expand, columns=['id', 'color', 'wave'])
print(df)
id color wave
0 01 yellow 1
1 01 yellow 2
2 01 red 1
3 01 red 2
4 01 blue 1
5 01 blue 2
6 02 yellow 1
7 02 yellow 2
8 02 red 1
9 02 red 2
10 02 blue 1
11 02 blue 2
我想在df中添加两列:
(1)“like”:一个列,用于显示特定波形中是否显示了特定id的颜色(1表示是,0表示否)
(2)“不喜欢”
因此,我期望的数据帧是:
id color wave like dislike
0 01 yellow 1 0 7
1 01 yellow 2 0 7
2 01 red 1 1 1
3 01 red 2 1 1
4 01 blue 1 0 2
5 01 blue 2 0 3
6 02 yellow 1 0 2
7 02 yellow 2 1 1
8 02 red 1 1 1
9 02 red 2 0 2
10 02 blue 1 0 7
11 02 blue 2 0 7
你能帮我解决这个问题吗?非常感谢您的回答
在合并之前,我们可以使用pivot_longerfrom pyjanitor来重塑各个数据帧:
尝试将两个帧转换为与另一帧兼容的格式:
DF1
df1
:DF2
df2
:然后
merge
将帧放在一起:df3
:相关问题 更多 >
编程相关推荐