我有一个 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) 我有一些具有一些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。
我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 函数,它也没有帮助。有什么方法可以找到最常见的值吗?