簡體   English   中英

將熊貓數據寫入CSV

[英]write panda data to csv

我有一個csv工作表,看起來像下面,每列都有一些數據。 要按Name過濾數據。 我知道要過濾的名稱。

Name  gender  address  age  post  city 
A      M       abc     20   dd     ASD
C      F       xyz     21   ll     KLM
B      M       lmn     22   mm     NOP

要輸出一樣。

Name    address     post   city 
A         abc        dd     ASD
B         lmn        mm     NOP

下面的代碼顯然會覆蓋csv中的第一個數據。 如何避免這種情況並解決此問題。 另外,要擺脫Excel中的索引列。 還有更好的編碼方式嗎? 這里是熊貓的新手。

for i in ['A','B']: #The names list is huge , taking 2 as example
        df=pd.read_csv('some.xlsx',index_col=False)
        df1= df.loc[df['Name'] == i, ['Name','address','post','city']]
df1.to_csv('ABC.csv')

嘗試使用isin

例如:

df=pd.read_csv('some.xlsx',index_col=False)
df1 = df.loc[df['Name'].isin(['A','B']), ['Name','address','post','city']]
df1.to_csv('ABC.csv')
  • 將您的列表作為輸入傳遞給isin

根據評論編輯-使用循環

df1 = None
for i in ['A','B']:
    if df1 is not None:
        df1 = df1.append( df.loc[df['Name'] == i, ['Name','address','post','city']] )
    else:
        df1 =  df.loc[df['Name'] == i, ['Name','address','post','city']]

df1.to_csv(filename)

Series.str.contains是您需要的功能。 它返回一個布爾系列,當用作其索引時,可用於過濾DataFrame。 對於多個名稱,請用|分隔名稱| (管道符號)。

names_list = ['A', 'B']
my_names = '|'.join(names_list)  # my_names = "A|B"
df = pd.read_csv('some.xlsx', index_col=False)
df1 = df1[df["Name"].str.contains(my_names)]
df1 = df1[['Name', 'address', 'post', 'city']]    
df1.to_csv("filtered.csv")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM