抓取特定行并将其导出到另一个csv

时间:2019-01-16 05:20:36

标签: python-3.x pandas pandas-datareader

我在这里试图做的事情,按名称抓取特定的行。我的csv数据表是水平的。不是垂直的,您可以看到here。 黄色部分是标题。

示例如下。

---
Row 1 DATA DATA DATA
---
Row 2 YSS  YDD   GGS
---
Row 3 DATA DATA DATA
---
Row 4 DATA DATA DATA
---

解析第2、3、4行,然后将其导出到另一个new.csv文件。棘手的部分是。导出另一个文件后。我想更改第2行的数据名称。

new.csv示例为:

Row 2 YSS  YDD  GGS
---
Row 3 DATA DATA DATA
---
Row 4 DATA DATA DATA
---

因此,尝试为第2行的数据命名。例如,如果YSS然后使YSS-> Google,或者如果它是YDD,则使它成为Yahoo。导出再次是new2.csv,就像:

Row 2 Google  Yahoo  Facebook
---
Row 3 DATA    DATA   DATA
---
Row 4 DATA    DATA   DATA
---

我从这个开始,但是我无法得到想要的东西。

import pandas as pd

df = pd.read_csv("datas.csv", index_col=0)
df = df.drop(columns=df.columns[df.iloc[0].isnull()]._data)
df_out = df.loc['利用額(Fee抜き)','クライアント名','媒体'] 

print(df_out)
  

KeyError:“标签[クライアント名]不在[列]中”

1 个答案:

答案 0 :(得分:1)

IIUC,您可能需要这样的东西:

考虑df如下:

    0       1       2       3
0   Row 2   YSS     YDD     GGS
1   Row 3   DATA    DATA    DATA
2   Row 4   DATA    DATA    DATA

d = {'YSS':'Google','YDD':'Yahoo','GGS':'Facebook'}
df.T.loc[1:,0] = df.T.loc[1:,0].map(d)
>>df

    0       1       2       3
0   Row 2   Google  Yahoo   Facebook
1   Row 3   DATA    DATA    DATA
2   Row 4   DATA    DATA    DATA

如果Row 2不是列而是索引,则只需执行以下操作:

df.loc['Row 2'] = df.loc['Row 2'].map(d)
>>df

        1       2       3
0           
Row 2   Google  Yahoo   Facebook
Row 3   DATA    DATA    DATA
Row 4   DATA    DATA    DATA