Python-Pandas-打印两列的字符串属性

时间:2018-11-09 06:51:01

标签: python pandas

如果我要打印一列的子字符串,这将起作用:

print(myDf["thisCol"].str[:2])

但是,如果要对另一列进行子串化并将其包括在输出中,则不确定如何执行此操作。

上面的人为输出大致是:

0 fo
1 ba

我想要的,第二列是“ anotherCol”,其中最大长度大于2,是输出:

0 fo    tr
1 ba    ca

(免责声明:我无法通过多次搜索找到答案。而且我正在以一种横向的方式学习熊猫。...)

3 个答案:

答案 0 :(得分:1)

您可以在print语句中提供一个代表所需空格数的因子,以将其乘以一个空格

import pandas as pd

# mock data following your example, replace by your own data
col1 = ['foo', 'bar']
col2 = ['tri', 'car']
my_df = pd.DataFrame({'this_col': col1, 'another_col': col2})

# Specify your desired number of spaces between the dataframe columns print
desired_num_spaces = 10

# Print dataframes with specified columns separated by the desired number of spaces
print(my_df['this_col'].str[:2] + desired_num_spaces * ' ' + my_df['another_col'].str[:2])

给予

0    fo          tr
1    ba          ca
dtype: object

顺便说一句:在Python中,最好使用snake_case作为变量名和键名。请不要使用其他语言(如C#,Java等)中使用的camelCase命名样式。

答案 1 :(得分:0)

df=pd.DataFrame({'col1':['foo','bar'],'col2':['foo','bar'],'col3':['foo','bar']})

选择所需的列,然后应用 chooper 函数,该函数会将字符串最多剪切到前两个字符

def chopper(x):
    return x[:2]

print(df[['col1','col3']].applymap(chopper))

输出:

  col1 col3
0   fo   fo
1   ba   ba

另一个选择:

如果您的子字符串阈值大于或等于5,则可以使用熊猫显示选项

pd.set_option('max_colwidth',6)

pd.set_option('max_colwidth',6)
df=pd.DataFrame({0:['asdfzklnlkdsfnalsdfknals;dknfs','asdfs0'],1:['foo','bar'],2:['foo','bar']})
print(df)

输出:

      0    1    2
0  as...  foo  foo
1  as...  bar  bar

答案 2 :(得分:0)

在我看来,就像您只想应用一些东西一样:

>>> df=pd.DataFrame([['aaa','bbb'],['ccc','ddd'],['eee','fff']])
>>> df.apply(lambda x: x.str[:2]) #or applymap(lambda x: x[:2])
    0   1
0  aa  bb
1  cc  dd
2  ee  ff

如果您不申请整个表格,则必须

df[specific_col]=df[specific_col].str[:2]

对于每个这样的列。