我有一个关于在Pandas 中转换或叠加值的问题.

我有一个数据帧

| product | s1_value | s2_value | s3_value |
| --------| -------- | -------- | -------- |
| First   | 105      | 103      | 108      |
| Second  | 205      | 186      | 204      |

我想转换并加入他们,以产生下一个结果(可以在列表中,然后迭代并排名?)

| stacked_values_p1 |
| ----------------- |
| 105               |
| 103               |
| 108               |

用Pandas中的Rank函数对上面的列进行排序,然后用initial data+Rank列创建一个数据框,如next,根据哪个值更高

| initial data | ... | s1_rank | s2_rank | s3_rank |
| ------------ | --- | ------- | ------- | ------- |
|     ...      | ... |    2    |    3    |    1    |
|     ...      | ... |    1    |    3    |    2    |

我一直在读关于堆栈、转置和合并的书,我有点困惑.

谢谢

推荐答案

对于按第product列创建索引后首次使用转置:

df1 = df.set_index('product').T
print (df1)
product   First  Second
s1_value    105     205
s2_value    103     186
s3_value    108     204

对于第二次使用,DataFrame.rank适用于没有第一次使用的所有列,并添加到原始DataFrame中:

f = lambda x: x.replace('value','rank')
df = df.join(df.iloc[:, 1:].rank(axis=1, ascending=False).astype(int).rename(columns=f))
print (df)
  product  s1_value  s2_value  s3_value  s1_rank  s2_rank  s3_rank
0   First       105       103       108        2        3        1
1  Second       205       186       204        1        3        2

Python相关问答推荐

将数据框架与导入的Excel文件一起使用

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

按顺序合并2个词典列表

log 1 p numpy的意外行为

SQLAlchemy Like ALL ORM analog

在极性中创建条件累积和

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''

将一个双框爆炸到另一个双框的范围内

Autocad使用pyautocad/comtypes将对象从一个图形复制到另一个图形

在第一次调用时使用不同行为的re. sub的最佳方式

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

如何在python tkinter中绑定键盘上的另一个回车?

根据过滤后的牛郎星图表中的数据计算新系列

遍历列表列表,然后创建数据帧

如何在Quarto中的标题页之前创建序言页

Match-Case构造中的对象可调用性测试

我的浮点问题--在C++/Python中的试用

突出显示两幅图像之间的变化或差异区域