小编gof*_*onx的帖子

Pandas any()返回false并显示真值

我有一个很空的数据帧,格式很差的日期我转换成DateTime格式.

from io import StringIO

data = StringIO("""issue_date,issue_date_dt
,
,
19600215.0,1960-02-15
,
,""")

df = pd.read_csv(data, parse_dates=[1])
Run Code Online (Sandbox Code Playgroud)

哪个产生

    issue_date  issue_date_dt
0   NaN         NaT
1   NaN         NaT
2   19600215.0  1960-02-15
3   NaN         NaT
4   NaN         NaT
Run Code Online (Sandbox Code Playgroud)

我希望我可以使用df.any()来查找行或列中是否有值.axis=0表现如预期:

df.any(axis=0)

issue_date       True
issue_date_dt    True
dtype: bool
Run Code Online (Sandbox Code Playgroud)

但是axis=1只对所有行返回false.

df.any(axis=1)

0    False
1    False
2    False
3    False
4    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

python datetime pandas

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

MultiIndex 上的 Pandas set_levels:级别值必须是唯一的

给定一个数据帧 df

                    Value
Category Pool Class      
A        1.0  1.0       1
              9.0       2
B        1.0  1.0       3
C        1.0  1.0       4
              5.0       5
Run Code Online (Sandbox Code Playgroud)

我想在没有(见下文)的情况下将级别PoolClass整数转换为整数reset_index

我尝试使用get_level_valuesset_levels像这样的组合

for c in ['Pool', 'Class']:
    df.index.set_levels(df.index.get_level_values(c).astype(int), level=c, inplace=True)
Run Code Online (Sandbox Code Playgroud)

然而,这引发了

ValueError: Level values must be unique: [1, 1, 1, 1, 1] on level 1
Run Code Online (Sandbox Code Playgroud)

为了了解会发生什么,我还尝试使用verify_integrity=False. 然后

df.index.set_levels(df.index.get_level_values('Class').astype(int),
                    level='Class', verify_integrity=False, inplace=True)
Run Code Online (Sandbox Code Playgroud)

产生

                    Value
Category Pool Class      
A        1.0  1         1
              1         2
B        1.0  1         3 …
Run Code Online (Sandbox Code Playgroud)

python indexing multi-index dataframe pandas

4
推荐指数
2
解决办法
4078
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

datetime ×1

indexing ×1

multi-index ×1