我有一個 Pandas 資料幀串列,我在其中執行列的 value_counts,最后將所有結果附加到另一個資料幀。
df_AB = pd.read_pickle('df_AB.pkl')
df_AC = pd.read_pickle('df_AC.pkl')
df_AD = pd.read_pickle('df_AD.pkl')
df_AE = pd.read_pickle('df_AE.pkl')
df_AF = pd.read_pickle('df_AF.pkl')
df_AG = pd.read_pickle('df_AG.pkl')
上述資料幀的格式如下(例如:df_AB):
df_AB:
id is_valid
121 True
122 False
123 True
對于每個 Pandas 資料框,我需要獲取 is_valid 列的 value_counts 并將結果存盤到 df_result。我嘗試了下面的代碼,但似乎沒有按預期作業。
df_AB_VC = df_AB['is_valid'].value_counts()
df_AB_VC['group'] = "AB"
df_AC_VC = df_AC['is_valid'].value_counts()
df_AC_VC['group'] = "AC"
結果資料框(df_result):
Group is_valid_True_Count is_Valid_False_Count
AB 2 1
AC
AD
.
.
.
任何線索將不勝感激
uj5u.com熱心網友回復:
我認為您只需要更系統地處理資料幀:
groups = ['AB', 'AC', 'AD',...]
out = pd.DataFrame({
g: pd.read_pickle(f'df_{g}.pkl')['is_valid'].value_counts()
for g in groups
}).T
uj5u.com熱心網友回復:
不要使用變數,這會使您的代碼復雜得多。使用容器
files = ['df_AB.pkl', 'df_AC.pkl', 'df_AD.pkl', 'df_AE.pkl', 'df_AF.pkl']
# using the XX part in "df_XX.pkl", you need to adapt to your real use-case
dataframes = {f[3:5]: pd.read_pickle(f) for f in files}
# compute counts
counts = (pd.DataFrame({k: d['is_valid'].value_counts()
for k,d in dataframes.items()})
.T.add_prefix('is_valid_').add_suffix('_Count')
)
示例輸出:
is_valid_True_Count is_valid_False_Count
AB 2 1
AC 2 1
uj5u.com熱心網友回復:
使用pathlib于提取物組名稱然后收集到的資料字典之前串連所有條目:
import pandas as pd
import pathlib
data = {}
for pkl in pathlib.Path().glob('df_*.pkl'):
group = pkl.stem.split('_')[1]
df = pd.read_pickle(pkl)
data[group] = df['is_valid'].value_counts() \
.add_prefix('is_valid_') \
.add_suffix('_Count')
df = pd.concat(data, axis=1).T
>>> df
is_valid_True_Count is_valid_False_Count
AD 2 1
AB 4 2
AC 0 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313024.html
