我正在解析.csv file(你可以在这里看到示例文件。)我正在提取第2行和第7行的数据。没问题。这就是我这样做的方式。
import pandas as pd
import numpy as np
df = pd.read_csv("datas.csv", index_col=0, header=None)
d = {'YSS':'Yahoo!リスティング 12月分 12/1〜12/31',
'YDNRT':'Yahoo!リマーケティング 12月分 12/1〜12/31',
'YDN':' Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31',
'GSN':'Googleリスティング 12月分 12/1〜12/31',
'GDNRM':'Googleリマーケティング 12月分 12/1〜12/31',
'GDN':'Googleディスプレイネットワーク 12月分 12/1〜12/31'}
pat = r'({})'.format('|'.join(d.keys()))
df.loc['アカウント名'] = df.loc['アカウント名'].str.extract(pat, expand=False).dropna().map(d)
df.loc['利用額(Fee抜き)'] = df.loc['利用額(Fee抜き)'].astype(str).apply(lambda x: x.split(".")[0])
df1 = df.loc[['アカウント名', '利用額(Fee抜き)']]
df1 = df1.T
df1.columns = ['項目','金額']
df1['数量'] = 1
df1['単位'] = "式"
df1['単価'] = np.nan
wow = df1[['項目','数量','単位','単価', '金額']]
newFile = wow.shift(1)
newFile['項目'] = newFile['項目'].fillna(df.loc['クライアント名'])
newFile.loc[newFile['項目'].str.contains('プレサンス'),['数量','単位','単価', '金額']] = ['','','','']
pos = newFile.index[newFile['項目'].str.contains('プレサンス')]
d = {}
i = 0
for p in pos:
if p == pos[0]:
d[p] = newFile.loc[:pos[i+1]-1].append(pd.Series('',newFile.columns), ignore_index=True)
elif (i + 1) > len(pos) - 1:
d[p] = newFile.loc[pos[i-1]+1:]
else:
d[p] = newFile.loc[p:pos[i+1]-1].append(pd.Series('',newFile.columns), ignore_index=True)
i = i + 1
pd.concat(d, ignore_index=True)
p.to_csv('newfile.csv', index=False)
使用新列创建新的.csv文件。你可以在这里看到它。 https://imgur.com/a/5w63Yht但我还需要做一件事。
在原来的qazxsw poi第1行有公司名称。我想解析那些公司名称并将其放在图像中的每个组的头上:qazxsw poi也需要删除总和...
我不太确定是否有可能......
您可以通过索引原始df并调用file's来替换https://imgur.com/a/4T2WxYt列NaN
,然后过滤包含字符串'項目'
的行并用空字符串列表覆盖行值,首先我们fillna
行向下1,这样它就会使标题:
'プレサンス'
现在因为你想要添加填充以使其更具可读性,我们可以存储总数所在的索引位置,然后迭代这些并切片df,将这些添加到dict然后调用shift
来垂直堆叠填充的切片:
In[111]:
newFile = df1.shift(1)
newFile['項目'] = newFile['項目'].fillna(df.loc['クライアント名'])
newFile.loc[newFile['項目'].str.contains('プレサンス'),['数量','単位','単価', '金額']] = ['','','','']
newFile
Out[111]:
項目 金額 数量 単位 単価
1 プレサンス ロジェ 和泉中央
2 Yahoo!リスティング 12月分 12/1〜12/31 YSS 91188 1 式 NaN
3 Yahoo!リマーケティング 12月分 12/1〜12/31 25649 1 式 NaN
4 Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31 13211 1 式 NaN
5 Googleリスティング 12月分 12/1〜12/31 131742 1 式 NaN
6 Googleリマーケティング 12月分 12/1〜12/31 35479 1 式 NaN
7 Googleディスプレイネットワーク 12月分 12/1〜12/31 18999 1 式 NaN
8 プレサンス グラン 茨木
9 Yahoo!リスティング 12月分 12/1〜12/31 YSS 113373 1 式 NaN
10 Yahoo!リマーケティング 12月分 12/1〜12/31 28775 1 式 NaN
11 Yahoo!ディスプレイネットワーク 12月分 12/1〜12/31 19010 1 式 NaN
12 Googleリスティング 12月分 12/1〜12/31 158389 1 式 NaN
13 Googleリマーケティング 12月分 12/1〜12/31 45530 1 式 NaN
14 Googleディスプレイネットワーク 12月分 12/1〜12/31 23224 1 式 NaN
15 プレサンス ロジェ 江坂
现在创建每个切片的dict并附加一个空行:
concat