我正在尝试找出如何使用基于其他列的文本填充某些行,但我正在努力解决这个问题。下面是我在pandas enter code here
//this is wrong code logically !!!!!!!!!
for (i = 0; i <arrayHeight ; i++) {
for (j = i+1; j < 3; ++j) {
if (array[i][0] > array[i][1]) {
swap = array[i][0];
array[i][0] = array[i][1];
array[i][1] = swap;
}
}
中拥有的数据子集的示例。
data frame
我想要的是得到类似下面的东西。以红色显示的文本是需要根据其他行中的文本条件填充或更改的文本。
在 Group Name_X Name_Y Code Group_Code Group_Correct
0 Group_A Company_PJ Company_PJ M001 1-00-002 Group_A
1 Group_A_Ltd Company_PJ NaN NaN NaN NaN
2 Group_B Company_XYZ NaN NaN NaN NaN
3 Group_GTY Company_R Company_R M020 1-00-033 Group_GTY
4 Group_A Company_PJ NaN NaN NaN NaN
5 Group_BGG Company_VV Company_VV M023 1-00-233 Group_BGG
6 Group_B Company_XYZ NaN NaN NaN NaN
7 Group_B Company_XYZ Company_XYZ M003 1-00-003 Group_B
8 Group_B_Limited Company_XYZ NaN NaN NaN NaN
9 Group_B Company_DEF Company_DEF M004 1-00-006 Group_B
10 Group_B+ Company_DEF NaN NaN NaN NaN
中,我最简单的方法是做什么。
答案 0 :(得分:1)
使用transform
first
df=df.groupby('Name_x').transform('first')
如果每行有不同的列
l=['name1','name2'] # column different from each row
pd.concat([df.drop(l,1).groupby('Name_x').transform('first'),df[l]],axis=1).reindex(columns=df.columns)
更新:
pd.concat([df.drop(l,1).groupby('Name_x').transform('first'),df[l.append('Name_x')]],axis=1).reindex(columns=df.columns)
Update2:
pd.concat([df.drop(l,1).groupby('Name_x').transform('first'),df[l],df[['Name_x']]],axis=1).reindex(columns=df.columns)