[英]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.