[英]Common column names among data sets in Python
我有6個數據集。 它們的名稱是:e10_all,e11_all,e12_all,e13_all,e14_all和e19_all。
所有的列和行數都不同,但是有一些共同的列。 我需要將這些列的行附加在一起。 首先,我想確定所有數據集共有的列,因此我知道要在SQL查詢中選擇哪些列。
在R中,我可以使用:
# Create list of dts
list_df = list(e10_all, e11_all, e12_all, e13_all, e14_all, e19_all)
col_common = colnames(list_df[[1]])
# Write for loop
for (i in 2:length(list_df)){
col_common = intersect(col_common, colnames(list_df[[i]]))
}
# View the common columns
col_common
# Get as a comma-separated list
cat(noquote(paste(col_common, collapse = ',')))
我想做同樣的事情,但是用Python。 有人碰巧知道一種方法嗎?
謝謝
熊貓沒什么不同。 制作一些虛擬數據幀:
>>> import pandas as pd
>>> e10_all = pd.DataFrame({"A": [1,2], "B": [2,3], "C": [2,3]})
>>> e11_all = pd.DataFrame({"B": [4,5], "C": [5,6]})
>>> e12_all = pd.DataFrame({"B": [1,2], "C": [3,4], "M": [8,9]})
然后您的代碼將轉換為類似
>>> list_df = [e10_all, e11_all, e12_all]
>>> col_common = set.intersection(*(set(df.columns) for df in list_df))
>>> col_common
{'C', 'B'}
>>> ','.join(sorted(col_common))
'B,C'
第二行將每個框架的列變成一個集合,然后取所有框架的交集。 盡管我們傾向於避免在可以避免的地方編寫循環,並且傾向於將循環直接遍歷元素( for df in list_df[1:]:
)而不是通過索引進行遍歷,但對代碼進行更直接的翻譯也可以。 仍然,
col_common = set(list_df[0].columns)
for i in range(1, len(list_df)):
col_common = col_common.intersection(list_df[i].columns)
會完成工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.