小编EMT*_*EMT的帖子

通过比较熊猫中的多列来选择数据框

我有一个 Pandas 数据框,想选择某些列具有特定值的行。例如,对于一列我试过这个:

df = pd.DataFrame({
    'subA': [54,98,70,91,38],
    'subB': [25,26,30,93,30],
    'subC': [43,89,56,50,48]})


a = df[df['subA'] == 70]
print(a)
Run Code Online (Sandbox Code Playgroud)

输出如下:

     subA  subB  subC
   2    70    30    56
Run Code Online (Sandbox Code Playgroud)

这是意料之中的,也是完全可以理解的。现在我想选择前两列具有特定值的行。例如,我将代码更改如下:

df = pd.DataFrame({
    'subA': [54,98,70,91,38],
    'subB': [25,26,30,93,30],
    'subC': [43,89,56,50,48]})

my_sub = ['subA', 'subB']
my_marks = [54, 25]


a = df[df[my_sub] == my_marks]
print(a)
Run Code Online (Sandbox Code Playgroud)

我期待看到这样的结果:

    subA  subB  subC
 1    54    25    43
Run Code Online (Sandbox Code Playgroud)

但相反,输出充满了 NaN 值,我不清楚:

     subA  subB  subC
0  54.0  25.0   NaN
1   NaN   NaN   NaN
2   NaN   NaN   NaN
3   NaN   NaN   NaN …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

4
推荐指数
1
解决办法
195
查看次数

填充前一行的总和以及数据框中另一列的变化

我有一些具有一些nan值的数据框。我想通过将前一行添加到列中的更改来填充它们Factor。数据框如下所示:

        Value Col    Factor
2022-11-30  0.020       84
2022-12-31  0.015       77
2023-01-31  NaN         90
2023-02-28  NaN         44
2023-03-31  NaN         39
Run Code Online (Sandbox Code Playgroud)

为了填充df.iloc[2, 0],我想对列df.iloc[1,0]中的变化求和Factor(在这种情况下是 90-77 = 13)。预期输出是这样的:

        Value Col    Factor
2022-11-30  0.020       84
2022-12-31  0.015       77
2023-01-31  13.015      90
2023-02-28  59.015      44
2023-03-31  64.015      39
Run Code Online (Sandbox Code Playgroud)

我尝试使用 for 循环,它有效。但找不到pandas函数但逐行填充nans的方法。我曾经df['Factor'].diff(1)获得列的差异Factor,但不知道如何逐行填充这些 nan。

python dataframe pandas

2
推荐指数
1
解决办法
100
查看次数

查找由列表组成的每行的最常见值

pd.DataFrame其中一列包含lists值。我想创建另一列,其中仅包含该列中最常见的值。示例数据框:

    col_1
0   [1, 2, 3, 3]
1   [2, 2, 8, 8, 7]
2   [3, 4]
Run Code Online (Sandbox Code Playgroud)

预期的数据框是

    col_1           col_2
0   [1, 2, 3, 3]    [3]
1   [2, 2, 8, 8, 7] [2, 8]
2   [3, 4]          [3, 4]
Run Code Online (Sandbox Code Playgroud)

我尝试做

from statistics import mode
df['col_1'].apply(lambda x: mode(x)) 
Run Code Online (Sandbox Code Playgroud)

但它显示了该栏中最常见的列表。

我还尝试mode直接在该列上使用 pandas 函数,它也没有帮助。有什么方法可以找到最常见的值吗?

python list dataframe pandas

1
推荐指数
1
解决办法
161
查看次数

标签 统计

dataframe ×3

pandas ×3

python ×3

list ×1