我有一个很空的数据帧,格式很差的日期我转换成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) 给定一个数据帧 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)
我想在没有(见下文)的情况下将级别Pool
和Class
整数转换为整数reset_index
。
我尝试使用get_level_values
和set_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)