python - 在Excel文件中用字符串对列进行排序[使用python,pandas]

标签 python excel pandas

我是 pandas 的新手,我正在寻找排序和比较列,但我想对字符串进行排序。 我想对字符串进行排序,并像以前一样留下空白 你们有什么想法吗?我想用下面的代码做一些事情,但我不知道下一步该怎么做

import pandas as pd

df = pd.read_excel('test.xlsx')
print(df.query('a != b'))

INPUT: 
  a b
1 A C
2 B D
3 D 
4 C A

OUTPUT: 
  a b
1 A A
2 B 
3 D D
4 C C

最佳答案

您需要使用Series.map找到b系列的正确顺序。最后替换为 Series.replace :

df['b']=df['a'].map(pd.Series(df.index,df['b'].values)).replace(df['b'])
print(df)

   a    b
0  A    A
1  B  NaN
2  D    D
3  C    C

如果您想按照字典排序,您需要首先使用 DataFrame.sort_values 基于 a 列进行排序:

df=df.sort_values('a')
df['b']=df['a'].map(pd.Series(df.index,df['b'].values)).replace(df['b'])
print(df)

   a    b
0  A    A
1  B  NaN
3  C    C
2  D    D

您也可以使用DataFrame.mergesort = False:

new_df=df['a'].to_frame().merge(df['b'].to_frame(),left_on='a',right_on='b',how='outer',indicator=True,sort=False).query('_merge!="right_only"').drop('_merge',axis=1)
print(new_df)

  a    b
0  A    A
1  B  NaN
2  D    D
3  C    C

或使用sort = True

new_df=df['a'].to_frame().merge(df['b'].to_frame(),left_on='a',right_on='b',how='outer',indicator=True).query('_merge!="right_only"').drop('_merge',axis=1)
    print(new_df)

-----------------------

      a    b
    0  A    A
    1  B  NaN
    2  C    C
    3  D    D

关于python - 在Excel文件中用字符串对列进行排序[使用python,pandas],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303727/

相关文章:

python - 从 or-tools 获得更多输出

python - 如何在 Pygame 中每次重置游戏时初始化新对象

javascript - 查找字符串中的重复项

excel - 如何将单元格范围作为表格从 Excel 复制到 PowerPoint - VBA

python - 如何用随机字典值填充 pandas 数据框列

python - 通过 URL 访问的 Django 错误端点

python - Flask WTforms 中的 CSS 适用于按钮,但不适用于其他按钮

arrays - 使用 VBA 将二维数组卸载到 Excel 工作表中的最快方法是什么?

python - 带有 Pandas Dataframe 的数据透视表(?)

python - 根据 pd.series 类型的变量对 pandas 数据框进行子集化