簡體   English   中英

Python中數據集之間的通用列名

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

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