返回空白数据帧而不是所需结果的方法

2024-06-28 11:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我尝试使用“删除不符合所需条件的行”下面的方法,只在数据框中包含B列的值小于C列的行:https://www.quora.com/How-should-I-delete-rows-from-a-DataFrame-in-Python-Pandas

但它不起作用,只返回一个空白的数据帧

所以基本上应该是这样的:

import pandas as pd
import numpy as np

import1 = pd.read_csv('./a_csv.csv')
import2 = pd.read_csv('./another_csv.csv')

df1 = import1[['A', 'B']]
df2 = import2[['A1', 'C']]

In[10]: df = pd.merge(df1, df2, left_on='A', right_on='A1').drop('A1', axis=1)
Out[10]:
    A    B    C
a  01    2    2
b  02    5    6
c  03    8    8
d  04    1    5

In[11]: df = df.ix[~(df['B'] < df['C'])]
Out[11]:
    A    B    C
a  02    5    6
b  04    1    5

但是11号线并没有产生预期的效果。我做错什么了?如果ix以外的方法更简单或更有效的话,我愿意使用它们。你知道吗


Tags: csv数据方法inimportdfreadon
1条回答
网友
1楼 · 发布于 2024-06-28 11:30:35

两个问题

  1. 通过使用~,你就是在否定掩码。你知道吗
  2. .ix用于按名称和位置索引。通常你想使用.loc.iloc,除非你有充分的理由不这样做。.ix实际上是deprecated,因为它很容易导致真正未实现的结果。你知道吗

代替你的11号线,试试:

df.loc[df['B'] < df['C']]

这将返回:

   A  B  C
b  2  5  6
d  4  1  5

相关问题 更多 >