在 Pandas 中转置列和排名值
Transpose columns and rank values in Pandas
我对 pandas 中的值转置或堆叠有疑问。
我有 1 个数据框
| product | s1_value | s2_value | s3_value |
| --------| -------- | -------- | -------- |
| First | 105 | 103 | 108 |
| Second | 205 | 186 | 204 |
我想转换并加入它们以产生下一个结果(¿可以在列表中然后迭代它并排名?)
| stacked_values_p1 |
| ----------------- |
| 105 |
| 103 |
| 108 |
在 Pandas 中使用 rank 函数对上面的列进行排序,然后有一个包含初始数据 + rank 列的数据帧,根据哪个值更高
| 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
我对 pandas 中的值转置或堆叠有疑问。
我有 1 个数据框
| product | s1_value | s2_value | s3_value |
| --------| -------- | -------- | -------- |
| First | 105 | 103 | 108 |
| Second | 205 | 186 | 204 |
我想转换并加入它们以产生下一个结果(¿可以在列表中然后迭代它并排名?)
| stacked_values_p1 |
| ----------------- |
| 105 |
| 103 |
| 108 |
在 Pandas 中使用 rank 函数对上面的列进行排序,然后有一个包含初始数据 + rank 列的数据帧,根据哪个值更高
| 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