我有一个 ~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))
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)
添加回答
举报
0/150
提交
取消