给出以下数据框:
df = pd.DataFrame({'foo':['[a]','[b'],
'bar':['[a','[b]']})
df
bar foo
0 [a] [a
1 [b [b]
我想添加一个结束括号"]"到那些价值观缺乏的细胞。 期望的结果是:
bar foo
0 [a] [a]
1 [b] [b]
但是,我不确定我将拥有多少列,因此我希望将其应用于整个数据框。
我从这开始,但没有运气:
df2 = df(lambda x: str(x)+"]" if (len(x)<3))
提前致谢!
更新: 我实际上正在使用一个看起来像这样的表:
0 1 2
0 b [r] None None
1 c [d d [r] f[d]
2 g [r] h [d] None
3 m [r p [d] None
4 b [r] n [d
5 m [d] a [r] None
答案 0 :(得分:2)
您可以按列循环使用,因为string
函数适用于Series
。将indexing with str与loc
print df
bar foo
0 [a [a]
1 [b] [b
for cols in df.columns:
#print df[cols].str[-1] != ']'
df.loc[df[cols].str[-1] != ']', cols] = df[cols] + ']'
print df
bar foo
0 [a] [a]
1 [b] [b]
或~
使用带有倒置掩码的contains
:
for cols in df.columns:
df.loc[~df[cols].str[-1].str.contains(']'), cols] = df[cols] + ']'
print df
bar foo
0 [a] [a]
1 [b] [b]
for cols in df.columns:
df.loc[~df[cols].str.endswith(']'), cols] = df[cols] + ']'
print df
编辑:
如果有strings
和none
空值:
print df
0 [a
1 [b] [b
2 [a None
for col in df.columns:
df.loc[~df[col].str.endswith(']').replace({np.nan: False}), col] = df[col] + ']'
df[col] = df[col].replace({']': ''})
print df
bar foo
0 [a]
1 [b] [b]
2 [a] NaN
答案 1 :(得分:1)
让我们了解public class LoginRegister extends AppCompatActivity implements SignUpFragment.OnFragmentInteractionListener ,SignInFragment.OnFragmentInteractionListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login_register);
final TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout_signup);
tabLayout.addTab(tabLayout.newTab().setText("Sign Up"));
tabLayout.addTab(tabLayout.newTab().setText("Sign in"));
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
final ViewPager pager =(ViewPager) findViewById(R.id.loginpager);
final SigninPagerAdapter adapter = new SigninPagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
pager.setAdapter(adapter);
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
pager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
函数
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void onFragmentInteraction(Uri uri) {
}
}
上面一行会调用DataFrame.applymap()
中每个单元格的df.applymap(func_reference)
。现在我们可以设计func_reference
。
df
这可能不是最有效的方式,但我认为它非常易读。