python - 检查字符串是否在熊猫数据框中并修改行
问题描述
我想检查字符串是否在数据框中并修改该特定行。
我知道如何查找字符串是否存在于数据框中,例如:
if usd_margin_data['acct'].str.contains(row['acct']).any():
但现在我想修改包含字符串的行。我怎么做?
TypeError: first argument must be string or compiled pattern
解决方案
利用:
df11 = (df1.pivot_table(index='acct',
columns='exchange',
values='spanReq',
aggfunc='sum')
)
print (df11)
exchange CME HKEX OSE SGX
acct
10 1728005.0 0.00 NaN NaN
20 83671.0 NaN 106516141.0 14872000.00
30 6237.0 NaN NaN NaN
40 857120.0 36071131.40 NaN 2987340.93
60 2803385.0 3459377.95 NaN 2030260.39
70 9007666.0 81300.00 1800000.0 57172391.00
80 NaN 23698214.00 NaN NaN
90 119644.0 NaN NaN NaN
df2 = df2.replace('-', np.nan).replace(',', '', regex=True).astype(float).set_index('Account')
print (df2)
SGX HKEX OSE CME Total
Account
10.0 NaN NaN NaN 1549946.0 1549946.0
20.0 144262.0 NaN 1173680.0 83557.0 1401500.0
30.0 NaN NaN NaN 6237.0 6237.0
40.0 3834382.0 4455808.0 NaN 631892.0 8922082.0
60.0 2329690.0 199192.0 NaN 3754770.0 6283652.0
70.0 514978.0 10360.0 16213.0 4777373.0 5318923.0
80.0 NaN 1741612.0 NaN NaN 1741612.0
90.0 NaN NaN NaN 119644.0 119644.0
df3 = df11.combine_first(df2)
print (df3)
CME HKEX OSE SGX Total
acct
10 1728005.0 0.00 NaN NaN 1549946.0
20 83671.0 NaN 106516141.0 14872000.00 1401500.0
30 6237.0 NaN NaN NaN 6237.0
40 857120.0 36071131.40 NaN 2987340.93 8922082.0
60 2803385.0 3459377.95 NaN 2030260.39 6283652.0
70 9007666.0 81300.00 1800000.0 57172391.00 5318923.0
80 NaN 23698214.00 NaN NaN 1741612.0
90 119644.0 NaN NaN NaN 119644.0
推荐阅读
- javascript - TypeError: undefined is not a function ('...data.map...' 附近)
- networking - route print 命令显示几乎所有 On-link 网关
- javascript - 如何将用户分配到组并使用 Firestore 引用字段类型对其进行排序
- r - 使用 purrr 和 modelr 从剂量反应模型 (drm) 进行预测
- oracle - 为什么 Oracle Apex 在从 4 迁移到 19 后停止使用 Google 验证码?
- python - 带有特殊字符和文本的正则表达式
- javascript - 宜家带引导程序的画布菜单
- vb.net - 使用 ASP.NET Core MVC 将多行插入数据库
- flutter - 如何使用轮播导航到其他屏幕
- reactjs - React Router 5 - history.push() 不会渲染组件 - 没有错误