我想检查字符串是否在数据框中并修改该特定行。
我知道如何查找字符串是否存在于数据帧中,例如像这样:
if usd_margin_data['acct'].str.contains(row['acct']).any():
但是现在我想修改包含字符串的行。我该怎么办?
TypeError: first argument must be string or compiled pattern
答案 0 :(得分:3)
使用:
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