我的数据框有问题。
第一个数据帧如下:
id 0 1 2 3
100 0 0 0 0
101 0 0 0 0
102 0 0 0 0
103 0 0 0 0
第二个数据帧如下:
id num
100 1
100 2
100 3
101 0
101 3
102 1
103 2
103 3
我想将第一个数据帧中的零更改为列中以“ id”表示的特定行中的零,这些列在第二个数据帧中以特定的“ id”显示在“ num”列中。所以最后我想将第一个数据帧更改为:
id 0 1 2 3
100 0 1 1 1
101 1 0 0 1
102 0 1 0 0
103 0 0 1 1
我该怎么做?我知道我可以使用for循环(我已经准备好了),但是我的数据帧很大,大约需要4个小时才能完成。我当时正在考虑在熊猫中进行地图绘制,但是我没有解决方案。
最诚挚的问候
答案 0 :(得分:2)
将max
与sum
一起用于指标值,如果需要计数值,请使用max
而不是df = pd.get_dummies(df2.set_index('id')['num']).max(level=0)
print (df)
0 1 2 3
id
100 0 1 1 1
101 1 0 0 1
102 0 1 0 0
103 0 0 1 1
:
df = (pd.get_dummies(df.set_index('id')['num']).max(level=0)
.reindex(index=df1.index, columns=df1.columns, fill_value=0))
如果可能,请在第一个DataFrame中添加更多行或列,并添加get_dummies
:
const mapDispatchToProps = dispatch => ({
onSubmitPressed: countryCode => {
dispatch(createCountry(countryCode));
dispatch(loadCountry(countryCode));
}
});
答案 1 :(得分:1)
命名第一个数据帧df1
和第二个数据帧df2
,可以旋转数据帧df2
:
df2['value'] = 1
df1 = df2.pivot_table(index='id', columns='num', values='value', fill_value=0)
输出:
num 0 1 2 3
id
100 0 1 1 1
101 1 0 0 1
102 0 1 0 0
103 0 0 1 1