根据另一列的值有条件地更改csv中的列

时间:2017-04-27 17:47:35

标签: python

从这段代码开始:

import pandas as pd

df = pd.read_csv('file.csv') 
df['Data'] = pd.to_datetime(df['Data'], format='%d/%m/%Y %H:%M')
df.set_index('Data' , inplace=True)

数据框是这样的:

Data                  a      b      c
2017-04-25 15:00:00   2      1      25
2017-04-25 16:00:00   4      7      nan
2017-04-25 17:00:00   4      6      nan
2017-04-25 18:00:00   5      9      34

如果np.nan在c列中,目标是用np.nan替换a和b列中的所有值。期望的输出:

Data                  a      b      c
2017-04-25 15:00:00   2      1      25
2017-04-25 16:00:00   nan    nan    nan
2017-04-25 17:00:00   nan    nan    nan
2017-04-25 18:00:00   5      9      34

1 个答案:

答案 0 :(得分:0)

这可行,但不是很优雅。希望其他人有更好的解决方案。

df['a'] = df.loc[~df['c'].isnull()]['a']
df['b'] = df.loc[~df['c'].isnull()]['b']

或者在一行中:

df[['a','b']] = df.loc[~df['c'].isnull()][['a','b']]