论坛上有很多例子,如何找到具有相应列名的行的最大值。一些例子在这里或这里
我想做的是对上面的例子进行一些具体的修改。我的数据框看起来像这样,其中所有列都是从左到右编号的(这个顺序非常重要):
x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10
0 0 1 2 2 0 0 0 0 0
4 4 0 4 4 1 0 0 0 0
0 0 1 2 3 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
现在,我想在每行末尾创建 6 个新列,其中包含列名称和行中的最大值。
x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 Max1 ValMax1 Max2 ValMax2 Max3 ValMax3
0 0 1 2 2 0 0 0 0 0
4 4 0 4 4 1 …Run Code Online (Sandbox Code Playgroud) 我有下一个熊猫数据帧:
a b c
1 1 5.0
1 1 None
1 1 4.0
1 2 1.0
1 2 1.0
1 2 4.0
2 1 3.0
2 1 2.0
2 1 None
2 2 3.0
2 2 4.0
Run Code Online (Sandbox Code Playgroud)
我想替换None,但不是按列的意思。我想选择所有行,其中在价值观a和b相似,如果c有一个None在选定行-值,只与替换它们c-mean选择行。类似的东西(此代码不起作用):
df[df[('a'==1) & ('b'==1)]]['c'].fillna(df[df[('a'==1) & ('b'==1)]]['c'].mean())
Run Code Online (Sandbox Code Playgroud)
这应该让我得到输出:
a b c
1 1 5.0
1 1 4.5
1 1 4.0
1 2 1.0
1 2 1.0
1 2 4.0
2 1 3.0 …Run Code Online (Sandbox Code Playgroud) 我有下一个问题。
例如我在 Pandas 中有下一个 DataFrame
a b c
'x' 1 100
'y' 2 100
'z' 3 100
Run Code Online (Sandbox Code Playgroud)
现在我想根据列中的值创建a新 DataFrame 的标题,列中的值是我用于索引的b第一行和第一列中的对应值。c目前我使用下一个代码:
import pandas
piv = df.pivot(index='c', columns='a')
new_df = pandas.DataFrame(piv.to_records())
Run Code Online (Sandbox Code Playgroud)
输出对我来说不够合适,因为我有b一个新 DataFrame 的列名称。也许有人可以在这里告诉我一个更好的解决方案来准确获得下一个输出:
index 'x' 'y' 'z'
100 1 2 3
Run Code Online (Sandbox Code Playgroud)
不应该是一个数据透视表,而只是一个真正的DataFrame。