为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件语句将条件列 C 设置为 Col A 或 Col B 的最快方法

根据条件语句将条件列 C 设置为 Col A 或 Col B 的最快方法

慕雪6442864 2023-06-20 16:47:13
我有一个 ~2MM 行数据框。我有一个问题,在用定界符拆分一列之后,看起来好像没有一致数量的列合并到这个拆分中。为了解决这个问题,我尝试使用有条件的新列 C,如果条件为真,则应等于列 A。如果为假,则设置为等于列 B。编辑:在尝试提供的解决方案时,我尝试了下面列出的一些代码,但它没有更新任何行。这是我正在使用的数据集的一个更好的例子:  Scenario meteorology time of day0      xxx          D7  Bus. Hours1      yyy          F3    Offshift2      zzz  Bus. Hours         NaN3      aaa    Offshift         NaN4      bbb    Offshift         NaN前两行格式正确。场景、气象和一天中的时间已从合并的列中正确拆分出来。但是,在其他行中,合并列没有气象数据。因此,“一天中的时间”数据已填充到“气象”中,导致“一天中的时间”为 nan。这是建议的方法:from dask import dataframe as ddddf = dd.from_pandas(df, npartitions=10)ddf[(ddf.met=='Bus. Hours') | (ddf.met == 'Offshift')]['time'] = ddf['met']ddf[(ddf.met=='Bus. Hours') | (ddf.met == 'Offshift')]['met'] = np.nan这不会更新“time”或“met”中的相应行。我也试过在熊猫中这样做:df.loc[(df.met == 'Bus.Hours') | (df.met == 'Offshift'), 'time'] = df['met']df.loc[(df.met == 'Bus.Hours') | (df.met == 'Offshift'), 'met'] = np.nan这种方法运行,但似乎无限期挂起。
查看完整描述

2 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

尝试,并计算时间,毕竟print(ddf.head(10))要看输出


from dask import dataframe as dd


ddf = dd.from_pandas(df, npartitions=10)

ddf[(ddf.A == 2) | (ddf.A == 1)]['C'] = ddf['A']

ddf[(ddf.A != 2) & (ddf.A != 1)]['C'] = ddf['B']


print(ddf.head(x))


查看完整回答
反对 回复 2023-06-20
?
largeQ

TA贡献2039条经验 获得超7个赞

最终如下:


cond = df.met.isin(['Bus. Hours', 'Offshift'])

df['met'] = np.where(cond, np.nan, df['met'])

df['time'] = np.where(cond, df['met'], df['time'])

遇到需要这样做的另一种情况。它沿着不应包含子字符串的字符串行:


df1 = dataset.copy(deep=True)

df1['F_adj'] = 0

cond = (df1['Type'] == 'Delayed Ignition') | ~(df1['Type'].str.contains('Delayed'))

df1['F_adj'] = np.where(cond,df1['F'], 0)


查看完整回答
反对 回复 2023-06-20
  • 2 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信